初始继承和多态 二(补充)
一.子类与父类
1.子类:父类
例如:
Dog(子类):Anomal(父类)
子类(派生类)父类(基类和超类)
2.子类可以继承父类那些成员
(非私有成员,但是从技术角度,可以认为是父类的所有成员)
软件系统中的两个类符合is a时可以使用继承
例如:
student is a person
se is a employee
鸵鸟(ostrish)is a bird(错误结论!!!)
☆:继承模式下子类构造背后到底发生了什么?
如果我们想构建一个子类对象
//在Animal父类中
class Animal{
public string Name{get;set}
public int Age{get;set}
//无参
public Animal()
{
}
//带参
public Animal(string name,int age)
{
this.Name=name;
this.Age=age;
}
}
//在Dog类中
class Dog:Animal{
public string Name{get;set}
public int Age{get;set}
//无参
public Dog()
{
}
//带参
public Dog(string name,int age,string color)
{
this.Name=name;
this.Age=age;
this.Color=color
}
public void empty()
{
Console.WriteLine("Eat mat very happy");
Console.ReadLine();
}
}
//Program
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.empty();
}
}
打断点进行调试
按F11进行下面调试
成序正常运行
(1)进入子类构造方法名,但子类构造的方法体
(2)跳转到父类构造方法名,接下来执行父类构造的方法体
(3)父类方法体执行完毕,转到子类的方法体执行
(4)子类方法执行完毕,跳转到Main对象函数,代表子类对象创建工程
结论:
只要你敢创建子类对象,那么后台一定有一个父类对象已经自动生成!!!!
base(a,b):括号中有几个参数,参照的是父类中的带参构造。a,b的参数命名根据子类的带参
构造参数的变量命名
base可以访问属性和方法
2.访问修饰符(protected)
public(方法,类,成员变量):任何地方都可以访问
internal(成员变量,类,方法):只能在当前程序集中使用(访问)
private(方法,成员变量):只能中在当前类的{}使用
protected受到保护的(成员变量和方法):当前类以及其他子类,以及子类的子类
3.单根性和传递性
单根性:一个孩子能有几个亲生父亲
only one
一个子类只能有一个直接父类
4.多态
多态:不同的对象对同一个操作,做出的响应不同,就是多态
5.通过base调用父类构造函数注意点
01.通过base调用父类构造函数只能书写在子类的构造后
02.通过base调用父类构造函数参数顺序和父类的构造函数一致