继承中的关键字
程序员文章站
2024-01-22 08:45:10
base关键字的使用;protected关键字的使用;子类与父类的关系;子类如何调用父类构造方法? ......
父类和子类概述
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.继承的单根据性
一个类只能有一个父类(一个类只能有一个基类)。