一、final关键字
1、定义一个常量
声明一个属性,命名规则建议大写,直接用类名进行访问。
常量必须在定义时或者构造器中初始化。
2、定义一个方法
final修饰方法时,该方法为最终方法,只能被继承,不能被重写。
3、定义一个类
final修饰的类不能被继承,故没有子类。
4、修饰方法参数
final修饰的方法参数不能被更改。
二、抽象类
1、概念
很多具有相同特征和行为的对象,可以抽象为一个类
很多具有相同特征和行为的类可以抽象为一个抽象类
使用abstract声明的类称为抽象类
2、抽象方法
抽象方法只能定义不能实现,用于被继承,其子类必须实现所有的抽象方法。
3、使用方法
抽象类可以没有抽象方法,有抽象方法的类必须是抽象类
抽象类可以有方法实现和属性
抽象类可以继承抽象类,可以不实现父类抽象方法
非抽象类继承抽象类,必须实现所有父类抽象方法
抽象类不能被实例化
抽象类不能用final修饰
抽象类可以有构造方法
三、接口
1、概念
接口是一组行为的规范、定义,没有实现
使用接口,可以使我们的程序更加利于变化
面向对象设计法则:基于接口编程
2、定义格式
interface 接口名称{
全局常量;
抽象方法;
}
3、使用方法
接口没有属性只有方法,只能定义抽象方法
接口中定义方法不写修饰符,默认public abstract
接口可以被接口继承,接口可以多继承
具体类实现接口必须实现接口的所有方法,使用implements关键字实现
一个类可以实现多个接口
接口不能有构造方法
接口不能被实例化
抽象类实现接口可以不实现接口的方法
4、面向对象设计原则
对修改关闭,对扩展开放
面向接口编程
四、多态
1、概念
对象在运行时的多种形态,对象的多态是从继承关系的多个类而来
2、分类
方法的重载和重写
对象的多态性
3、使用
用父类的引用指向子类的对象,实现抽象的粒度,面向抽象编程。
Chicken c=new HomeChicken();//向上转型
HomeChicken hc=(HomeChicken)c;//向下转型
五、instanceof关键字
1、使用方法
当需要把父类的实例强制转换为子类的引用时,为避免类型转换异常,那么需要在转换之前做类型检查
if(c instanceof HomeChicken) //判断对象是否是这个类型,成立的条件是对象本身及对象的父类型都可以通过检查
2、父类的设计法则
当父类的子类过多,使用instanceof判断过于繁琐,此时设计父类应满足如下原则:
父类通常都设计为抽象类或接口,其中优先考虑接口,接口不能满足则考虑抽象类
一个具体的类尽可能不去继承另一个具体类,这样的好处是无需检查对象是否为父类的对象。