本节内容:
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
{
}