父类和子类概述
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 }
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 }
继承的特性
1.继承的传递性
传递机制 A->B;B->C C具有A的特性。
2.继承的单根据性
一个类只能有一个父类(一个类只能有一个基类)。