首页 > 代码库 > 课堂笔记--初识继承和多态 继承

课堂笔记--初识继承和多态 继承

第六章 初始继承和多态

 

继承:一个类可以使用另一个类的属性和方法(成为该类的成员)

子类继承父类使用的符号是冒号

子类不能继承父类的构造方法

子类不能访问父类的私有字段和方法

在调用子类构造的时候,没有使用base关键字调用父类的指定构造,那么默认调用父类的无参构造。

 

定义一个Person类

class Person

    {

        public string Name { get; set; }

        public Gender Sex { get; set; }

 

        public void SayHello()

        {

 

        }

 

        public Person()

        {

        }

        public Person(string name, Gender sex)

        {

            this.Name = name;

            this.Sex = sex;

        }

 

定义一个Chinese类 继承自Person

 class Chinese:Person

    {

        public int Age { get; set; }

        public Chinese()

        {

 

        }

       public Chinese(string name, int age, Gender sex)

        {

            this.Age = age;

            this.Name = name;

            this.Sex = sex;

        }

}

定义枚举 性别 Male,Female

public enum Gender

    {

        Female=0,Male=1

}

 

Chinese cn=new Chinese(“”,18,Gender.Male)

指向子类构造→不进入子类构造赋值→进入父类的构造体→回到子类构造→执行子类构造题,子类构造体执行完毕→跳转到Main→在内存中构建出Chinese

 

如果new一个子类对象,那么有如下执行流程

1.定位到子类对应构造函数,没有执行子类方法

2.转向父类的无参构造函数,执行父类构造方法体

3.专项子类方法体继续进行

(使用base关键字执行指定的父类构造函数)

 

Base关键字

base.父类成员 base.父类方法

Base关键字可以调用父类成员 方法 和构造

        public Chinese(string name, int age, Gender sex):base(name,sex)

        {

            this.Age = age;

        }

base(参1,参2)的顺序根据父类构造参数的参数顺序保持一致,但是变量名是和子类构造的参数变量名一致

public Person(Gender sex, string name)//修改父类参数顺序

子类调用参数的顺序需要变化

public Chinese(string name, int age, Gender sex):base(sex,name)

        {

            this.Age = age;

        }

 

 

 

protected访问修饰符

 

访问修饰符private 私有的 只能在当前类使用

protected只能在该类和与其有继承关系的子类中使用

public可以在任何地方使用

 

继承的两大特性

单根性 一个类只能有一个直接父类

传递性 A是B的父类 B是C的父类 C仍然可以继承A的属性和方法

 

 

多态:不同的对象对于同一个操作做出的响应不同

多态目的是为了统一调用

课堂笔记--初识继承和多态 继承