三、抽象类
抽象类(类中定义抽象方法后,该类必须声明为抽象类):关键字abstract,是一种特殊的父类,类中可以定义抽象方法,由子类继承后重写父类当中的抽象方法;
抽象方法:将共性的行为(方法)抽取到父类之后,具体的实现逻辑无法在父类中明确,就可定义为抽象方法,有子类继承父类重写抽象方法具体实现;
注意事项:1.抽象类不能实例化(如果抽象类可以实例化,即可调用类中定义的抽象方法,而抽
象方法当中并没有具体的逻辑实现代码,所以无意义);
2.抽象类中存在构造方法;
3.抽象类中可以存在普通方法
4.抽象类的子类要么实现父类当中抽象方法的重写,要么自己再次定义为抽象类
与abstract关键字冲突的:
1. final:被 abstract 修饰的方法,强制要求子类重写,被 final 修饰的方法子类
不能重写
2.private:被 abstract 修饰的方法,强制要求子类重写,被 private 修饰的方法
子类不能重写
3.static:被 static 修饰的方法可以类名调用,类名调用抽象方法没有意义
四、接口
接口:体现的思想是对规则的声明,Java中接口更多体现为行为的抽象;为程序制定规则,规范代码
接口关键字:interface,接口跟抽象类类似,只不过它当中只定义抽象方法;
接口不能实例化,接口与类之间是实现implements的关系,接口子类要么实现接口当中的抽象方法,要么重新定义为抽象类
五、多态
多态:同一个行为具有多个不同表现形式或形态的能力
多态前提:有继承/实现关系;有方法重写;有父类引用指向子类对象
多态成员访问特点:成员变量:编译看左边(父类),执行看左边(父类);
成员方法:编译看左边(父类),执行看右边(子类);
多态的弊端:不能访问子类的特有成员
如果被转的引用类型变量,对应的实际类型和目标类型不是同一种类型,那么在转换的时候就会出现ClassCastException (类型转换异常)------可用关键字 instanceof
六、包
包:关键字package,本质就是文件夹,用来管理类文件;
相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!导包格式:import 包名.类名;
假如一个类中需要用到不同类,而这个两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问。