ERHAIMOON_学习日志(day16)
-
父类对象作为方法参数的好处
可以传入任何子类对象,形成多态
-
父类作为方法的返回值的益处
可以返回任何子类对象,形成多态
-
父类引用作为类属性的益处
可以为该属性该类的任何子类对象,形成多态
-
抽象类的作用
抽象类的抽象方法是定义规范的,让子类遵守规范,导致在子类和父类之间形成方法重写的关系,进而形成多态的设计,最终实现一个良好的扩展性需求
抽象类的局限性
java中类是单继承的,就是一个类只有一个直接父类
定义宠物的父类Pet,子类有猫,狗
定义爬树的父类CB,子类有猫,熊
猫的父类应该是宠物类和爬树类
class Cat extends Pet,CB{//错误,java是单继承的
}
用接口解决这个问题
接口
使用interface关键字修饰的是接口,使用class修饰的是类,使用enum修饰的是枚举,使用@interface修饰的是注解。
定义接口
interface IUsb{
}
接口的规则
- 接口中可以包含属性,但是属性必须是常量,也就是static final修饰的。static和final可以省略,若省略在编译时jvm会自动为接口的属性添加关键字 static final。
public interface IUsb{
static final int AGE=0;//等同于int AGE=0;
}
- 接口中的属性访问修饰符是public的,可以省略,若省略public,在编译的时候,jvm会自动为接口属性添加public。
public interface IUsb{
public int AGE=0;//等同于int AGE=0;
}
- 接口名的访问修饰符与类相同,可以是public和默认
- 接口中可以定义方法,接口中定义的方法必须是abstract方法,必须是public的方法。其中public和abstract可以省略,在编译时jvm会自动田间abstr和public。
public interface IUsb{
public abstract void wind();//等同于void wind();
}
- 接口中不允许有实现的方法
- 接口不能实例化
接口的作用
接口中的方法是抽象方法,因此接口不允许实例化,我们之前已知抽象方法是定义规范的,因此接口也是定义规范的。
接口的作用与抽象类相同
接口的使用
- 子类与父类之间是继承关系 extends
- 子类与接口之间是实现关系 implement
近期评论