第11节、C#继承

C#继承

描述: 继承允许我们根据一个类来定义另一个类, 建立类的关系,实现代码的利用、方便系统的扩展。继承类的所有成员,被继承的类称为父类或基类,继承其类的类称为子类或派生类。

特点:

  • 派生类对应基类的扩展,派生类可以添加新的成员,但不能移除已经继承的成员的定义。
  • 继承是可以传递的,如果C从B中继承,B有从A中继承,那么C不仅可以继承B中的声明,同时可以继承A中的声明。
  • 构造函数和折构函数不被继承,除此之外其他成员被继承。基类的方式方式只能决定子类是否能访问它。
  • 一个类不能提同时继承多个父类。
  • 继承实现了代码重用、结构清晰。

语法(类之间的继承关系是通过冒号实现的,冒号前是派生类,后面是基类)

Class 基类类名
{
类的成员
}

Class 派生类:基类类名
{
类的成员
}

 范例一

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApplication1
 8 {
 9     public class 简单继承
10     {
11         //运行入口
12         public static void Main(string[] age)
13         {
14             人 A = new 人();
15             A.Age = 20;
16             A.Name = "小明";
17             A.print();
18             Console.ReadLine();
19         }
20     }
21 
22     public class 人类
23     {
24         public string name;
25         public string Name { get; set; }
26         public void print()
27         {
28             Console.WriteLine("姓名:{0}",this.Name);
29         }
30     }
31 
32     public class 人:人类
33     {
34         public int age;
35         public int Age { get; set; }
36         public void print()
37         {
38             Console.WriteLine("姓名:{0},年龄{1}", this.Name,this.Age);
39         }
40     }
41 }
简单基础案例代码

 运行结果

 

 疑问一:调用派生类运行,先实例化基类先还是子类呢(先执行谁的构造方法先)?

 

 

结论:如果子类继承父类,在实例化子类的时候,首先执行父类的构造函数,再执行子类的构造函数。

base关键字:调用父类成员方法

访问修饰符 类名(形参):base(实参)
{
处理语句;
}

  

 

 

如果在同名的方法中使用 base 关键字调用父类中的方法,则相当于把父类中的方法内容复制到该方法中。

注意:

  • base关键字表示调用父类的构造方法
  • base(参数1,参数2)中的参数只有参数名,没有数据类型
  • 根据base()的参数个数决定调用父类的那个构造方法;
  • base(参数1,参数2)中的参数名要和子类参数名相同

二、注意:基类派生类分别有类的带参构造方法,如果派生类没有实现基类的构造方法就提示错误了

 

 提示父类需要0个参数的构造方法,为啥呢?不懂不明白!

三、派生类的方法 与基类方法一样,会有什么情况出现

四、虽然上面能运行,但是编译是错误的,解决方式:用New隐藏基类的方法

 

 

 结论:如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有分别声明为virtual和override,派生类方法就会隐藏基类方法。

五、派生类与基类方法一致情况正确写法。

 

 结论:

际是派生类实现了基类的方法,所以基类方法是虚方法virtual,派生类实现重写override

posted @ 2021-03-02 23:28  LiuzzBK  阅读(108)  评论(0编辑  收藏  举报