初始继承和多态 二(补充)

 

一.子类与父类

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调用父类构造函数参数顺序和父类的构造函数一致

posted @ 2018-04-10 16:06  H丶  阅读(167)  评论(0编辑  收藏  举报