黑马程序员—继承、接口

时间:2023-02-18 11:53:32

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、继承

1.变量,如果子类中出现非私有的同名成员变量时

子类访问本类变量,用this。

子类访问父类的同名变量用super。

使用extends表继承关系。

2.函数,存在复写功能

当子类继承父类,沿袭了父类到子类中,具备该功能,功能内容却和父类不一致,使其保留父类功能,并重写功能内容。

父子函数必须一模一样才能重写。包括返回类型。

提高拓展性,可用super.函数();直接调用父类函数

注:①.子类重写父类函数,必须子类权限大于等于父类权限。

        ②.静态只能复写静态。

3.构造函数,第一行默认super();

子类直接获取父类数据,子类在对象初始化时,要先访问父类中的构造函数,可以手动指定。

子类所有的构造函数都默认访问父类中空参数的构造函数,

子类的非空参数构造函数第一行this访问本类构造函数,但和super()冲突,子类至少有一个函数会访问父类中的构造函数。

最父类,Obiect。

三、关键字final

1.作为一个修饰符,可以修饰类、函数、变量

2.被final修饰的类不可以被继承

3.被final修饰的函数不能被重写

4.被final修饰的变量是一个常量只能被赋值一次,所有字母大写,单词用_连接。

四、抽象类

1.关键字abstract,当多个类出现相同功能,但功能主体不同

2.可以向上抽取,只抽取功能定义,而不抽取功能主体

3.抽象方法一定在抽象类中

4.抽象类不能被new创建对象,调用无意义,必须由子类复写调用,子类复写一部分方法,子类还是抽象类。

五、模板方法设计模式

在定义功能时,功能的一部分是确定,但是有一部分是不确定,由子类复写去完成不确定部分,也就是用抽象类设计具备一定功能的模板

六、接口interface

1.接口常见定义;常量、抽象方法。

2.接口中的成员都有固定修饰符

常量:public static final               方法:public abstract

3.接口可以被类多实现。使用连接符implements实现。

4.一个类extend一个类implements多个接口用,隔开。

5.接口与接口可以多继承。

6.接口是对外暴露的规则,是程序的功能扩展,可以进行多实现

七、多态

1.多态的体现:父类的引用指向了自己的子类对象。

2.多态的前提:必须是类与类之间有关系,要么继承,要么实现。

3.多态的好处:多态的出现大大提高程序的扩展性。

4.多态的应用:建立工具条。

5.多态的弊端:提高了扩展性,但是只能使用父类的引用访问父类中的成员。访问子类的需要进行强制向下转型。

非静态成员函数在多态调用时,编译看左,运行看右。

在多态中,成员变量和静态成员函数,无论编译和运行都参考左边。

八、内部类

1.访问规则:①内部类可以直接访问外部类中的成员

                    ②外部类要访问内部类,必须建立内部类对象,(内部类可以私有)。

                    ③内部类持有一个外部类的引用 外部类名.this

                    ④内部类在成员位置上,就可以被修饰符修饰,用pricate进行封装,静

                    态后,只能访问外部静态成员。 

                       外部类名.内部类名   变量 = 外部类对象. 内部类对象

                      ⑤外部其他类调用内部静态类成员     外部类名.内部类名.函数();

2.内部定义原则:当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物在使用外部事物的内容。

3.局部内部类的特点:①不可以被成员修饰符修饰

                       ②可以直接访问外部类的成员,但是访问它所在局部中的变量

                            只能访问被final修饰的局部变量

4.匿名内部类:

1)匿名内部类其实就是内部类的简写格式,也就是匿名子类对象

2)定义匿名内部类的前提,内部类必须继承一个类或者实现接口

3)匿名内部类定义的方法最好不超过3个。可以多态方法调用多个子类复写的法

new Demo(){

void show1(){}

void show2(){}}.show();