1.类
面向对象程序设计实现信息封装的基础,是一种用户自定义类型,也称类类型
类中可嵌套类:比如一辆车(车类)包含*(*类)
命名空间外可以写类:命名空间是一种显性的约束而已 ,然而写不写在命名空间里对
语法没有影响。
函数无法写类:函数是种行为,行为和主体不能颠倒。
类默认是公有的,接口默认是公有的
2.封装
写一个类,里面写一些属性和方法,每个类包含数据说明和一组数据或传递消息的函数。函数不能直接调用,必须是对象调用方法
3.构造函数
没有返回值,如果有自定义的构造函数,就会调用自定义的构造函数。
如果是有继承关系的构造函数还可以这
public class Rect:Shape
{
public Rect (int a=0,int b=0):base(a,b)//这里两个a,b是对应的,子类的值传到基类的构造值中,再由基类调用基类写了的赋值语句对变量进行赋值。
{}
}
4.析构函数
无权限符号,因为析构函数无共有私有,必须调用。
5.get,set函数
public static int BufferHeight{get;set}//属性,本质还是函数
是一种语法糖
public void SetLength(float length)
{
this.length=length;//类中有自定义的length
}
public flaot getLength()
{
return length;
}
6.类的静态函数
静态变量和方法
静态变量是共享的,每次的改变对下次都有影响,不会因为是不同对象而不同
静态函数 可以实现直接类名调用,不用实例化调用
7.理解继承
基于有某种包含的关系,有一些共同的属性。
动物继承自活物,猫继承自动物
便于重复使用代码
接口实际是方法的集合,和类一样默认是公有的,因为全是给别人用的
c#不允许多重继承,允许继承接口,如果接口中的函数没有实现,则需要实现未实现的函数
8.理解多态
同一个行为,多个不同的表示形式和形态
比如一个类中两个add函数,名称相同,返回值相同,两者的参数个数,类型不同,即为多态
9.抽象类
public abstract class shape//抽象类
{
public abstract int GetArea();//抽象方法
}
抽象类如果被继承,那么抽象类中的抽象方法必须在子类中被实现,抽象类中的抽象方法只是一个方法声明。
10.虚拟方法
与抽象方法相比较,如果一个类中有虚拟方法,若某个类继承自有虚拟方法的类,其中的虚拟方法不需必须实现(但是基类中的虚拟方法必须实现,至少要打大括号有返回值 )。抽象类的抽象方法子类是必须实现的(抽象类中的抽象方法只是声明)。
示例:
public class shape
{
public virtual void Rendershape()
{
console.writeLine("执行基类的渲染");
}
}
public class Rect:shape
{
public override void Rendershape()
{
console.writeLine("画一个矩形。");
base.RenderShape();
}
}
.....
main函数里面写
var shapes =new list<shape>//可变类型,当数据类型比较多不能统一的时候,用var
{
new Rect();
new Triangle();
new Circle();
}
foreach(Shape item in shapes)//shape换成var是一样的
{
item.RenderShape();
}
//遍历后的打印结果为(以Rect为例):画一个矩形,执行基类的渲染工作
11.属性的写法
public int height{get;set}