面向对象3


 

1  继承性

  Java语言中  只支持单继承  不支持多继承

java 支持多层继承, 也就是一个继承体系

如何使用继承体系中的功能?

查阅父类功能, 创建子类对象使用功能。

子父类中函数的特点  覆盖    1 子类覆盖父类, 必须保证子类权限大于等于父类权限才可以覆盖,否则会编译失败

                                             2   静态只能覆盖静态

重载 : 只看同名函数的参数列表

重写 : 子父类函数一模一样 

子父类中构造函数的特点

在子类对象进行初始化时,父类的构造函数也会运行, 子类构造函数默认第一行有一个隐式的语句super()

super()会访问父类中空参数的构造方法,而且子类中所有的构造函数第一行都有默认的语句super()

为什么子类一定要访问父类中的构造函数

因为父类的数据子类可以直接获得,所以子类对象建立时,需要查看父类是如何对这些数据进行初始化的

所以子类对象初始化时, 需要访问父类的构造函数

如果要访问父类中特定的构造函数,可以通过手动定义super语句的方式来指定

结论:
子类的所有的构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数内的第一行都有一句隐式super();

当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。

当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。
子类中至少会有一个构造函数会访问父类中的构造函数。

 

2     final关键字

final是一个修饰符

1  可以修饰类, 函数, 变量。

2   被final修饰的类不可以被继承, 为了避免被继承,被子类复写功能

3   被final修饰的方法不可以被重写

4  被final修饰的变量是一个常量 只能被赋值一次, 既可以修饰成员变量 也可以修饰局部变量。

5   内部类定义在类中的局部位置上时, 只能访问该局部被final修饰的局部变量

 

3  抽象类

抽象类的特点

1  抽象方法一定在抽象类中

2   抽象方法和抽象类必须被abstract关键字修饰

3  抽象类不可以用new创建对象,因为调用抽象方法是没有意义的

4  抽象类中的方法要被调用, 必须由子类复写其所有的抽象方法后, 建立子类对象调用

     如果子类只复写了部分的抽象方法, 那么该子类还是一个抽象类

抽象类中可以不定义抽象方法, 这样的作用就是 不让该类创建对象


4 模版方法模式

在定义功能时,功能的一部分是确定的,但有一部分是不确定的,而确定的部分在使用不确定的部分,那么就将这不确定部分暴露出去,由该类的子类去完成

面向对象3
 
 
5    接口
接口定义的格式特点:
1   接口中常见的定义: 常量  抽象方法
2   接口的成员都有固定的修饰符                接口中的成员都是 public 的。
      常量: public static final    int  NUM = 4 ;
     抽象方法:  public abstract  get() ;
 
接口是不可以创建对象的, 因为有抽象方法,需要子类实现后,全部覆盖接口中的抽象方法, 否则子类就是抽象类

接口的特点 : 1接口是对外暴露的规则 2 接口是程序的功能扩展 3 接口可以降低耦合度