父类和子类概述

  1.概念解释

    ①.子类继承父类,父类派生子类。

    ②.子类又叫派生类,父类又叫基类(超类)。

    ③.子类继承父类成员,也可以有自己独立的成员。

  2.继承的条件

    继承需要符合的关系:Is-a 的关系:Dog is an Animal

 

继承中的关键字

  1.this关键字

    可以使用this关键字访问父类成员

  2.base关键字

    关键字base的作用:

      ①.调用父类的构造函数。

      ②.调用父类的属性和方法。

  3.protected关键字

    父类成员:

      ①.public修饰:所有类都可以访问

      ②.private修饰:子类无法访问

      ③.protected修饰:允许子类访问,而不允许其他非子类访问 

 

子类调用父类构造函数总结   

  1.隐式调用

    如果其他子类的构造函数没有使用base知名调用父类哪个构造函数时,子类会默认调用父类的无参构造函数:base(),这时父类要提供无参的构造函数。

  2.显示调用

    如果父类没有无参数的构造函数,子类构造函数必须指明调用父类的哪个构造函数。

  3.示例 

 1 class Animal
 2     {
 3         public string Name { get; set; }//名字
 4         public string Color { get; set; }//颜色
 5         public string Kind { get; set; }//种类
 6         public string Favorite { get; set; }//喜好
 7 
 8         public Animal() { }
 9         public Animal(string name, string color, string kind)
10         {
11             this.Name = name; 
12             this.Color = color;
13             this.Kind = kind;
14         }
15         //自我介绍
16         public void Introduce()
17         {
18             string info = string.Format("我是漂亮的{0},我的名字叫{1},身穿{2}的衣服,我爱吃{3}!", this.Kind, Name, Color, Favorite);
19             Console.WriteLine(info);
20         }
21     }
View Code
 1  class Dog:Animal//继承Animal类
 2     {
 3         public Dog(string name, string color, string kind)
 4         {
 5             this.Name = name;//使用this关键字访问父类成员
 6             this.Color = color;
 7             this.Kind = kind;
 8         }
 9 
10         public Dog() { }//隐式调用:默认调用父类的无参构造函数,若此时父类并没有无参构造函数,则出错。
11 
12         public Dog(string name, string color, string kind, string favorite) : base(name, color, kind)
13         {//显示调用
14             this.Favorite = favorite;
15         }
16         public void Race()
17         {
18             base.Introduce();//使用base关键字调用父类方法
19             Console.WriteLine("下面给大家表演赛跑,请大家鼓掌!");
20         }
21     }
View Code

 

继承的特性

  1.继承的传递性

    传递机制 A->B;B->C C具有A的特性。

  2.继承的单根据性

    一个类只能有一个父类(一个类只能有一个基类)。