继承:突出的特点

extends关键字
对象有很多,有共同点,可以分成若干类别,共同点提取出来,形成父类,其他类成为子类。
子类也会继承父类的父类的所有属性和方法(但不能直接访问private成员)
子类有相同方法时,会优先调用自己的。
单根继承原则:每个类只能继承一个类 不写extends,默认继承Java.lang.object类。
默认类有。。。
构造函数 :子类构造函数第一句话默认调用父类的无参数构造函数super(),除非子类构造函数第一句话是super,而且super必须放在第一条,不会出现两条super。
抽象类和接口
-
抽象类
类:属性(0或者多个)+方法(0或者多个)
完整健康的类:所有方法都有实现。
可以没有方法,但是有方法就肯定有实现,才是一个完整的类。
完整的类才可以被实例化,new出来。
暂时有方法未实现,则被定义为抽象类。
抽象类关键字 abstract 没有大括号。
抽象类组成:成员变量,个数不限;具体方法,方法有实现,个数不限;抽象方法加abstract关键字,个数不限。
abstract class A{} //类被定义为抽象的。不能new。
抽象类也是类,继承了抽象类就不可以继承其他类。
子类继承抽象类,必须实现所有未实现的方法,才能不是抽象类了。
-
接口
如果一个类里所有方法都没有实现,那么这个类就是接口interface。也是.java 编译出来也是.class
类只可以继承一个类,但是可以实现多个接口,继承和实现可以同时实现。
接口不算类,或者说是特殊的类。接口设计弥补单根继承的不足。单根继承不够灵活。
继承、接口和抽象类 类实现接口必须实现所有未实现的方法。如果没有全部实现,那么只能成为抽象类。
接口可以定义变量,但是一般只能是常量。
继承必须放在实现前面。
抽象类可以有private/protected,接口方法都是public。
转型、多态和契约设计
- 类转型
- 类型可以相互转型,只限制于有继承关系的类。
- 子类可以转换成父类,但是父类不可以转换成子类。
- 子类继承父类所有财产,由大变小是可以的,变成父类。但是父类不可以变成子类。
继承、接口和抽象类 - 父类转为子类有一种情况例外。如果这个父类本身就是子类转化来的。
继承、接口和抽象类
- 类型可以相互转型,只限制于有继承关系的类。
- 多态
- 类型转换带来的作用就是多态。
- 子类继承父类所有方法,但子类可以重新定义一个名字,参数和父类方法一样的方法,这个行为就是 重写。(不是重载)。子类的方法替换掉父类的。
- 子类方法高于父类。
继承、接口和抽象类 - 多态的作用
- 以统一的接口来操纵某一类中不同的对象的动态行为
- 对象之间的解耦
继承、接口和抽象类
- 契约设计
- 契约:规定规范了对象应该包含的行为方法。
- 接口定义了方法的名称、参数和返回值,规范了派生类的行为
- 基于接口,利用转型和多态,不影响真正方法的调用,成功将调用类和被调用类解耦
new接口同时必须实现所有方法,匿名类只在里面用一次就结束了。只需要传入一个对象。继承、接口和抽象类