结构和类是并列的,都是创建对象的模板
修饰符 Struct 结构名
1、结构是值类型,类是引用类型
2、结构不能包含显式的的无参数构造函数,结构成员会自动初始化默认值,不能再声明时赋值初始化
3、不能有基类(不能Base) 不支持继承
4、声明了结构类型后,可以使用New 运算符创建构造对象,也可以不使用new。如果不适用New,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用
面向对象的四个特性:
封装:不会破坏原有数据,相当于把数据提取出来在相应的类中进行处理执行
继承: 通过:实现
抽象: ?
多态:通过虚拟重写方法实现 注:基类中未虚拟(virtual)的话 ,新类中相当于是隐藏了而override 用了就只有一个方法this.Fun();
重新new一个同名方法 还是有两个方法可以用;一个是Base.Fun();一个是this.Fun();
关于接口
1、可以由方法、属性、事件、索引器 的任何组合构成,不能包含 常数(const) 、字段、运算符、实例构造函数、析构函数、类型
也不能包含任何种类的静态成员。接口成员一定是公开的
2、C#中不支持直接进行多重继承,但是可以通过接口实现多重继承,接口之间也可以进行继承,普通类和抽象类可以继承自接口。一个类可以同时继承一个类和多个接口,但是接口不能继承类
关于抽象
1、用于描述共性,不考虑具体的实现,只确定必须具有的行为(即确定抽象方法)
2、包含抽象方法的类就是抽象类
在派生类中实现基类的抽象方法,是使用override来重写基类方法
关于接口、类、和抽象
抽象类是一个不完全的类,需要通过派生类来完善
接口只是对类的约束,仅仅承诺了类能够调用的方法
一个类一次可以实现若干个接口,但一个类只能继承一个基类
抽象类只需派生类实现它的抽象方法,接口要求必须实现它的所有成员
实际编程中,接口的使用要比抽象类广泛的多
关于密封类
不能当作基类的类,从而保证了密封类的密封性和安全性(sealed实现) 实际使用非常少,单纯为了保证安全性