继承:
继承的成员访问特点:
子类继承父类时,方法名称不相同时,分别调用即可;当成员方法名称一致时,先在子类中找,看是否有那个方法,如果有就调用子类的方法,如果没有就直接调用父类的成员方法。
方法重写:override,继承里边的技术。
当子类出现和父类相同的方法时,子类会覆盖掉父类的方法,调用子类的功能。
方法重载:overload,方法里边的
在方法中,出现多个方法名相同并且他们参数列表不同,与返回值无关
参数列表不同分为:参数类型不同和参数个数不同
final关键字:
在实际开发中,有些方法不能直接覆盖掉,不想让子类重写父类的方法,那么就引出final关啊键字(可以修饰类,变量,成员方法)
final的用法:
final可以修饰类,但是该类不能被继承
final可以修饰变量(成员变量,局部变量),但是该变量此时变成了一个常量。
final可以修饰成员方法,但是该方法不能被重写。
多态:某个事物在不同时刻体现出不同的状态。
多态的前提:
1)必须有继承关系
2)必须方法重写(猫狗案例:里边每种动物吃的食物不同)
3)必须要有父类指向引用子类对象: 向上转型
格式: 父类名 父类方法名=new 子类名();
多态中的成员访问特点:
1)成员变量的访问特点: 编译看左,运行看左(父类) (用父类对象名调用子类的方法)
2)成员方法(一般没有静态修饰的都是非静态的)访问特点:编译看左,运行看右。
3)构造方法:作用就是给对象进行初始化。
4)静态的成员方法访问特点:编译看左,运行看左(静态成员方法不算方法重写,静态成员方法都和类有关)
多态的优点:
1)提高代码的扩展性(由多态保证)
2)提高代码的维护性(由继承保证)
多态的弊端: 不能访问子类特有的功能(方法)
解决方案:向下转型,将父类的对象强制转换为子类的引用
格式: 子类名 子类对象名=(子类名)父类对象名;
出现异常:ClassCastException(类型转换异常)
抽象类:关键字abstract
比如猫狗案例中,每种动物吃的食物都不一样,所以在当前类中只给出一个方法声明(没有具体的方法体)
在一个类中给出一个抽象的功能(方法),那么这个类一定是抽象类。但是抽象类中可以有非抽象的方法
抽象类的格式 :
abstract class 父类名{
}
抽象方法的格式:
public abstract(必须写) 方法() ;注:没有方法体。
抽象类的特点:
1· 抽象类不能实例化(不能直接创建对象);
2· 子类必须重写父类的抽象功能
抽象类的子类:
1·抽象类的子类如果是个抽象类,没有任何意义,因为就是要通过具体类来创建对象,而子类是抽象类的化,就不能创建对象
2·抽象类的子类是具体类,那么创建对象就由子类完成:格式: 子类名 子类对象名=new 子类名();抽象类多态。
实际工作中: 接口多态,抽象类多态,具体类对象的创建。
抽象类的成员特点:
成员变量:可以是变量也可以是自定义的常量。
构造方法:作用就是给对象进行初始化 1)默认初始化 2)显示初始化
成员方法:可以是抽象的。也可以是非抽象的。
接口:将一些额外(扩展)的功能暴露出来,只要那个类实现了这个接口,就要去实现接口中的功能、
格式:
interface 接口名{}
接口的子实现类:
1)接口的子实现类不能是抽象的,因为接口本身不能实例化,需要子实现类来进行实例化,而子实现类如果是抽象的接口,那么就没有意义。
2)接口的子实现类是具体类
格式: 接口名 对象名=new 子实现类名(); 接口多态(使用的比较多)
实际开发中的命名规则:
实现类命名: 接口名+impl
接口的成员访问特点:
1)成员变量:存在默认的修饰符 public static final
2)构造方法:接口中没有构造方法
3)成员方法:默认修饰符public abstract (抽象的方法)
类与类,类与接口,接口与接口之间的关系:
1)类与类之间是继承(Extends)关系:只支持单继承不支持多继承,但是支持多层继承。
2)类与接口之间是实现(implements)关系:一个类继承一个类的同时可以实现多个接口(class Son extends Father implements Inter1,Inter2)
3)接口和接口之间是继承(extends)关系:支持单继承,也支持多继承
例子:老师和学生案例,加入额外的抽烟功能。
分析:从具体到抽象:
老师类: (具体)
姓名,年龄,性别
构造方法:有参/无参
提供getXXX/setXXX公共访问方法
其他功能。
学生类:(具体)
姓名,年龄,性别
构造方法:有参/无参
提供getXXX/setXXX公共访问方法
其他功能
人类:(抽象)
姓名,年龄,性别
构造方法:有参/无参
提供getXXX/setXXX公共访问方法
其他功能。
接口: 抽烟功能(抽象)
程序实现则是从抽象到具体:
先定义一个抽象的人类