首页 > 代码库 > 每日一测5(关于继承)

每日一测5(关于继承)

继承、封装和多态是面向对象编程的重要特性。
其成员被继承的类叫基类(或父类),继承其成员的类叫派生类(或子类)。

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个均为我是子类的方法

 

每日一测5(关于继承)