所有类的基类都是object
C#中的基类为object
C#单根性---不能同时继承多个类
1、虚方法是在父类中定义,在子类中重写的
2、子类可以不用重写父类的虚方法
3、虚方法可以空实现
4、虚方法和抽象方法的区别
虚方法必须要有方法体(必须实现),但可以没有语句
抽象方法必须没有实现,必须在抽象类中声明
虚方法可以在抽象类中声明
抽象方法必须在子类中重写,虚方法可以被重写
5、实现多态的手段
虚方法Virtual
抽象方法abstract
接口
6、方法签名
方法名、返回值类型、参数列表都必须保持一致。
[ 访问修饰符也得一致]
7、类中的成员如果不写访问修饰符默认是private
8、静态类为什么不能被实现例化
abstract修饰的类,不能被实例化
sealed修饰的类,不能被继承
9、访问修饰符
private当前类中可以访问,类中成员的默认访问修饰符。
私有访问。只限于本类成员访问,子类,实例都不能访问。
protected当前类及子类中可以访问(在继承中用。)
保护访问。只限于本类和子类访问,实例不能访问。
internal当前程序集内部可以访问
内部访问。只限于本项目内访问,其他不能访问。
protectedinternal
当前程序集或子类中(不同程序集也可以访问)。
内部保护访问。只限于本项目或是子类访问,其他不能访问
public任何地方
公有访问。不受任何限制。
10、构造函数
l base:
子类写的有参数的构造函数,默认调用的是父类的无参构造函数
想在子类中调用父类的有参数的构造函数,那么,必须在子类的构造函数后用base
l this:
在本类中,自己的构造函数想要调用自己其他的构造函数,那么可以通过this
2013-10-11
11、返回值,传 值
12、抽象练习重点
13、new关键字
1、 表示在子类中隐藏从父类继承过来的虚方法
2、 用new标记的方法是子类中的一个全新的方法
3、 不能多态
14、子类可以通过构造函数调用父类的属性进行传参
15、sealed:(*)密封类,不能被继承
接口不能被实例化
静态类不能被实例化
抽象类不能被实例化
abstract修饰的类,不能被实例化
sealed修饰的类,不能被继承
16、 抽象类中的抽象成员不能使用private访问修饰符,可以使用其他访问修饰符。
17、 虚方法:
1.父类中必须有实现。
2.子类中可以不重写。
3.虚方法可以在普通类中。(有序方法的类是可以(可能)被实例化的。)
• 抽象法:
1.父类中不能有任何实现。
2.子类中必须重写(除非:子类也是一个抽象类。)
3.抽象方法必须在抽象类中。
18、重写 ToString override ToString();
19、方法重载
方法名称相同
方法签名不同
– 方法名
– 参数类型、个数、(顺序)
– 参数的修饰符(ref、out、params)
– 不包含方法返回值
20、类是对对象的抽象
抽象类是对类的抽象
接口是对行为的抽象
21、委托是一种引用方法的类型
22、实现接口的类分三种,一是抽象类,二是一般的类,再就是结构. 而实现方式又分为实现接口和显式实现接口.
23、对于“显式实现接口”,其实现方式就是将成员写成
接口名.成员名 的形式. 显式实现接口与一般的实现区别在于显式实现的成员只有接口对象才能调用.
24、对于接口,从定义就可以发现是对方法的抽象,也可描述成对能力的抽象;而抽象类是
对以事物的抽象,与具体的对象有关. 这么说很混乱