当前位置:首页 > Windows程序 > 正文

c# 面相对象3

2021-03-26 Windows程序

继承:类与类之间的关系(父子关系)
子类继承父类,那么子类就拥有父类的公共属性和方法
一个子类只能继承一个父类,一个父类可以有好多子类
子类对象可以直接转成父类,但父类只能转回对应的子类
如果子类转成父类之后,父类对象就不能点出子类里面的属性和方法使用了

c#允许一个类继承其他类的属性和方法,别继承的类称为父类,继承的类称为派生类或子类。子类不仅仅可以继承基类的属性和方法,还可以根据需要定义新的属性和方法,增加新的功能,这样可是用户重用基类的代码,专注于子类的新代码,提高类的可重用性,继承的好处是能共享代码,,继承后,父类的所有的字段和方法都将存在于子类中,每一个子类都具有父类的非私有特性。

Object类是所有类的祖先(默认的)

c#语言中子类仅能派生于一个父类。

1.继承的定义

如果要声明一个类派生于另一个类,可以使用下面的语法

[修饰符]  class  派生类名:基类名

{

//派生类的成员

}

其中:

修饰符:可选用poublic    internal      absrtract     sealed   new     private    protected等修饰符,根据需要确定。

派生类名:必须是一个有效的c#标识符。一般采用Pascal大小写命名规则,单词的第一个字母大写。

基类名:被继承的类的名。

类体:用于定义派生类的成员。

继承意味着一个类隐藏了除了构造函数和析构函数的基类的所有成员。

继承应该注意的几点

《1》继承是可以传递的。

《2》派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去基类的成员的定义。

《3》析构函数和构造函数不能参与被继承,除此之外的其他任何成员都能被继承。

《4》派生类如果定义了与继承而来的成员同名的新成员,都将覆盖以继承的成员。但这并不是在派生类中删除了这些成员,而只是不能再访问这些成员。

《5》类可以定义虚方法、虚属性以及虚索引指示器,他的派生类都能够重载这些成员。从而实现类的多态性。

《6》派生类的成员有两个成员:一个是从基类中继承来的,另一个是在派生类中重新定义的。

案例如下

using system; namespace Example1 { //定义基类 public class Person { protected string name ; //姓名 保护成员 protected string indentityCard; //身份证号 Private string tel; //电话号码 私有成员 public Person (string P_name ,string P_identityCard,string P_tel) //构造函数 { name = P_name ; indentityCard= P_identityCard; tel=P_tel; } public void PrintInfo() { Console.WriteLine("姓名:{0}",name); Console.WriteLine("身份证号:{0}",identityCard); } } //定义派生类 public class Employee:Person { public string id; //在派生类中添加雇员的编号 公共成员 public Employee(string P_name,string P_identityCard,string P_tel,string e_id):base( P_name , P_identityCard, P_tel) //构造函数 { id=e_id; } public void PrintEmployeeInfo() //雇员信息打印 { Console.WriteLine("姓名:{0}",name); Console.WriteLine("身份证号:{0}",identityCard); Console.WriteLine("雇员 :{0}",id); } } class Class1 { [STAThread] static void Main(string[] args) { //用类派生创建对象 Employee liming=new Employee("liming","370321012950020","8505085" ,"8888"); //调用PrintEmployeeInfo() 方法 Console.WriteLine("调用PrintEmployeeInfo()方法"); liming.PrintEmployeeInfo(); //调用PrintInfo()方法,继承而来 Console.WriteLine("调用PrintInfo()方法"); liming.PrintInfo(); } } }

程序运行结果:

            调用PrintEmployeeInfo()方法

             姓名:linming

             身份证号:  370321012950020

            调用PrintInfo()方法 

            姓名:liming

            身份证号: 370321012950020

解析程序:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68117.html