当抽象类中没有具体成员 全部都是抽象方法 即抽象到极致 引起了质变——>接口
1.什么是接口(通常是为了定义规则的)
接口不是类 但接口还.是一个类的结构 只不过用interface修饰 替换原有的class 如public interface Test(){}
1.1 有什么成员
属性 不能含有一般属性 只能含有公有的静态的常量 即public static final(这个不写也行 因为默认就是这个)
方法 不能含有一般方法 只能含有公有的抽象的方法(1.8版本后多了 default修饰具体方法)
块 不能含有 一般程序块 和 static块(块本身就是具体的 接口不让有具体的)
构造方法 不能含有构造方法(因为构造方法是为了创建对象 但是方法是抽象的不需要用对象空间来记录 属性存在静态区 所以都用不到对象 所以不需要构造方法)
1.2 如何使用 能不能创建对象?
因为没有构造方法 不能创建对象
只能通过子类多实现(implements)来做事
public class A implements B,C,D{
}
1.3 接口与接口 接口与类的关系
接口不能继承别的类 抽象类具体类都不行 因为接口已经是最抽象的了
抽象类——可以直接多实现——接口
public abstract A implements B,C,D{
}
具体类——不可以直接多实现——接口 (需将接口中的抽象方法具体化 或者 具体类也变为抽象类)
接口——可以直接*多继承——接口
2.例子
设计一款游戏 王者荣耀
游戏里有什么
英雄——抽象类
坦克 法师 射手 刺客——抽象类
小兵——抽象类
坦克兵 普通小兵 超级兵——抽象类
Buff——抽象类
防御塔
水晶
接口——定义规则 定义一些功能
比如普通攻击
普通类——继承 射手 实现接口