1. 继承机制
继承:一个类自动的拥有另一个类的所有属性时,这种关系即为继承关系,被继承的类为父类,继承的类为子类
有继承关系的类的关系有共享性,差异性,层次性,不解释。
继承的优点:结构清晰,代码量小,易于修改和维护。
注意:所有类都继承于Object类,都具有Object类拥有的属性和方法
2 继承的实现:extends
子类的定义:书上有例子
[类修饰符]class 类名 extends 父类名{
属性定义;
方法定义;
}
子类可以从父类继承所有的非private变量或者方法
域的继承与隐藏:
- 子类可以继承父类的所有非私有域;
- 子类重新定义一个与从父类继承来的域变量完全相同的变量,为域的隐藏。此时当子类执行父类继承的方法时,调用父类变量,当执行自定义的方法时,调用自定义变量。
方法的继承与覆盖:
- 子类可以继承父类所有的非私有方法;
- 方法的覆盖(重写):子类重定义与从父类继承来的一个同名方法,此时父类这种方法在子类不再存在。实现子类与父类的差异性
3 多态性
多态:面向对象语言可以允许方法同名,即相同名字的方法可以有不同的实现。
- 重载实现方法的多态性
- 重写实现方法的多态性
具体例子书本有,也没有特别难理解的地方,不再详细说明。
4 构造方法的继承与重载
构造方法的重载:构造不同参数类型或者个数的构造方法,以完成不同情况的初始化。一个类的构造方法可以相互调用,通过this()方法实现,可以根据需求传参,且必须在构造方法的第一个可执行语句
构造方法的继承:
- 子类无条件继承父类的无参构造方法,一个类若有子类则必须有无参构造方法,否则编译 错误
- 子类若无自定义构造方法则继承父类的无参构造方法作为自己的构造方法;若子类定义了构造方法,在创建对象时先调用父类的无参构造方法,再执行自己定义的构造方法。(构造方法的执行顺序)
- 子类可以通过在构造方法中用super()方法调用父类的有参构造方法,super()必须位于第一个可执行语句。
5 接口
接口是用来组织应用中多个类和调节类之间关系的一种结构,包含常量和抽象方法。接口的继承用implements关键字,接口可以实现多继承。
接口的定义:
[public] interface 接口名 [extends 父接口名表]{//接口可以实现多继承
域类型 域名=常量; //常量声明,因为接口用于共享数据,一般不声明变量,可以声明静态变量,final变量
返回值 方法名(参数表); //只能是抽象方法,不能是具体的实现的方法,不能有{}
}
注意:类实现接口用implements,接口继承父接口用extends
实现接口应该注意问题:
- 在类的声明部分,用implements声明实现的接口
- 类在实现抽象方法时,必须用public 修饰
- 除抽象类以外,在类的定义部分必须实现接口中所有的抽象方法体,即实现方法的具体功能
- 抽象类可以不实现接口的所有方法,但对于该抽象类的非抽象子类,不能有未实现的接口方法。即非抽象类不允许有抽象方法,抽象类中可以有非抽象方法。