c# 第32节 类的继承
本节内容:
1:为什么要继承
2:继承特点
3:继承的实现
4:子类传统构造,与base构造
1:为什么要继承
2:继承特点
什么是继承: 继承就是子类包含父类的数据结构和行为方式, 包括字段、属性、方法 在类的继承中: 有父类和子类一组,还有基类与派生类一组的雅名。 二者是一样的,只是叫法不同。 继承的好处: 1)提高了代码的重用性; 2)提高程序设计的效率; 3)为程序设计中的特别需要提供了编写代码的自由空间, 从而提高了已有程序设计成果的可扩展性。
3:继承的实现
注意点:类的继承规则 1:单根性 只能继承一个父类 2:传递性(查看类图) ####点击解决方案资源管理器,右键属性,查看类图 3:派生类定义与基类同名的成员,则覆盖基类成员 4:派生类自然继承基类成员,但不能继承基类的构造的成员,但是会默认的调用父类的无参构造函数。
############clerk类##################3 class Clerk { private string _name; public string Name { get { return _name; } set { _name = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } public void Csayhello() { Console.WriteLine("我是{0},我{1}",this.Name,this.Age); } #####################sales类################################## class sales:Clerk //这样就有了父类的字段、属性、方法 但是父类的字段是private的不能访问 { private string _partment; public string Partment { get { return _partment; } set { _partment = value; } } public void Ssyahello() { Console.WriteLine("我是{0},我{1}岁,我在{2}部门",this.Name,this.Age,this.Partment); } } #################technical 类########################### class technical:sales { private string _hobby; public string Partment { get { return _partment; } set { _partment = value; } } public string Hobby { get { return _hobby; } set { _hobby = value; } } public void Tsayhello() { Console.WriteLine("我是{0},我{1}岁,我在{2}部门,我的喜爱{3}",this.Name,this.Age,this.Partment,this.Hobby); } ############Main方法###################### class Program { static void Main(string[] args) { } }
解释注意点3:派生类定义与基类同名的成员,则覆盖基类成员
解决办法:要想重写父类的字段,采用关键字new
总结:
new关键字可以隐藏基类的属性或方法。
以后一见到new关键字,就说明基类中有相同的方法或属性;
解释注意点4: 子类不能继承基类的构造的成员
在Main 方法进行实例化。 ///要记得在子类和父类中创建一个无参的构函数造
namespace 继承 { class Program { static void Main(string[] args) { Clerk zs = new Clerk("张三", 34); sales ws = new sales("王四", 34); //“继承.Clerk”不包含采用“0”个参数的构造函数,无法继承父类的构造 } } }
4:子类传统构造,与base构造
5:封装类,禁止子类继承
class test1:test //错误 继承.test1”: 无法从密封类型“继承.test”派生 { } sealed class test { }