多态,抽象类,接口
1.多态:
前提: a.类的继承 b.接口实现
注意:
- 父类的引用会调用子类中重写的方法,没有的话找父类
- 父类无法直接使用子类中独有的,若想用则需要转型
多态使用成员的特点:
1.使用成员变量:编译运行看父类|左边|类型
2.使用成员方法:编译看类型|左边|父类,运行找对象|右边|子类
转型:
向上——自动提升
向下——强制转化 子类类型 引用 = (子类类型)父类类型;
2.抽象类:
定义:没有方法体的方法。
特点:1.必须在抽象类中 2.被abstract修饰的方法
注意:
- 抽象类可以存在抽象方法,可以存在普通方法
- 抽象类不能实例化
- 抽象方法必须被重写
- 抽象类的使用: 1)具体子类:重写所有的抽象方法+按需新增 2)抽象子类:按需重写+按需新增
- 抽象方法一旦被重写可以不在被重写
- abstract与static,private,final,native不能一起使用
3.接口:特殊的抽象类
优点:
- 接口可以多实现,类只能单继承
- 提高代码的复用性
- 解耦
- 定义开发规范
定义接口使用关键字interface
属性: 公共的静态的常量 public static final 数据类型 变量名 = 赋值; 修饰符可以省略,默认是 public static final,可以按需省略
方法: 公共的抽象的方法 public abstract 返回值类型 方法名(); 修饰符可以省略,默认public abstract
注意:
- 抽象方法的使用必须重写
- 接口不能实例化
- 需要实现类来实现接口,使用接口中的内容
- 具体的实现类: 必须重写所有的抽象方法+按需新增
- 抽象的实现类: 按需重写 + 按需新增
- 抽象实现类的使用,需要子类继承抽象类,重写所有的抽象方法
- 类的继承使用extends关键字,实现使用implements关键字
- 类可以实现多个接口class Test implements Demo,A,B
- 一个类应该先继承后实现
- 只能类实现几口,继承父类,但是接口和接口之间只能多继承
- 类和类之间之能单继承