-
隐藏父类方法用new,否则有警告
查看全部 -
抽象类无法实例化对象,仅仅是指不能直接实例化一个抽象类对象;但是使用父类指针指向子类这一行为实际上是实例化了一个子类对象,而子类对象并不是抽象类对象。就比如一个抽象类CanEat,它有一个Human这一子类继承。我们可以使用CanEat *p=new Human这一方式实例化一个Human对象,但不能使用CanEat *p=new CanEat这一方法
查看全部 -
抽象类,抽象方法
方法前面加关键字abstract声明为抽象方法(不能有实现)
含有抽象方法的类必须声明为抽象类
抽象类的方法可以是抽象方法和非抽象方法的任意组合,也可以全是非抽象方法
派生类必须用override关键字重写基类的抽象方法,否则派生类仍是抽象类
查看全部 -
通过使用基类引用指向派生类,来实现多态,
调用基类的虚方法时会根据引用实际指向的类型,来调用:
如果派生类重写了基类的虚方法,则调用派生类重写的方法
否则调用基类的虚方法
其他特点:
重写虚方法必须具有相同的可访问性,且基类方法不能是私有的
不能重写static方法或者非虚方法
方法,属性,索引器,实践,都可以声明为virtual(基类)或override(派生类)
查看全部 -
设计原则之一
面向对象编程中,都遵循一个原则:依赖倒置原则。
就是程序设计要依赖于抽象类(Pet),二部依赖于具体类(Dog).
查看全部 -
隐藏方法
语法细节
屏蔽数据成员:在派生类中声明名称和类型相同的成员
屏蔽函数成员:在派生类中声明新的带有相同函数签名的成员
让编译器知道:可以添加new关键字,否则会有警告
查看全部 -
调用基类构造函数:隐式、显式。
查看全部 -
private、static等非虚方法,不能重写。
查看全部 -
基类用virtual定义,子类用override定义,含义是子类重新定义speak。如果子类没有override,则沿用父类的speak。
查看全部 -
子类不想继承父类的部分内容,可以在子类中添置代码,new加想更改的代码名。
查看全部 -
c#中只有单继承,c++可以多继承。
查看全部 -
继承:
class ChildClass:ParentClass
{
子类内容
}
查看全部 -
静态类扩展方法
查看全部 -
静态构造函数
查看全部 -
自定义转化:
查看全部
举报