继承、封装和多态是面向对象编程的重要特性。
其成员被继承的类叫基类(或父类),继承其成员的类叫派生类(或子类)。
1、子类隐式获得父类的除构造函数和析构函数以外的所有成员(包括私有和非私有)。
2、继承的单一性:c#不支持多重继承,子类只能有一个直接父类,但一个父类可以同时拥有多个子类。
3、继承的传递性:即 B继承自A,C又继承自B,那么C一般拥有A类所有的成员。
4、子类创建的时候会默认调用父类的无参构造函数,如果父类不存在无参构造函数则报错。 如需要调用指定的父类构造函数,用base关键字(每日一测2里有例子)。
5、当子类和父类有同名方法时, 子类的方法会覆盖父类的方法吗?
class Person { public void song() { Console.WriteLine("我是父类的方法"); } } class Chinese:Person { public void song() //编译器会提示隐藏, 在void前面用new修饰即可 { Console.WriteLine("我是子类的方法"); } } class Program { static void Main(string[] args) { Person p = new Chinese(); //父类变量指向子类对象 p.song(); Chinese cp = new Chinese(); cp.song(); Console.ReadKey(); } }
运行结果为:
当父类的song方法用virtual修饰, 子类的song用override修饰的时候,运行结果2个均为我是子类的方法
时间: 2024-11-05 06:21:06