Java抽象类
为一个类增加一个抽象方法 后,并且把这个类声明为abstract后,如果有类继承这个抽象类,则这个类必须提供不一样的抽象方法实现
如Hero类为抽象类,其中有抽象方法attack,则继承Hero的类就必须用实现不同的attack方法,代码如下:
1 public abstract class Hero { 2 String name; 3 4 float hp; 5 6 float armor; 7 8 int moveSpeed; 9 10 public static void main(String[] args) { 11 12 } 13 14 // 抽象方法attack 15 // Hero的子类会被要求实现attack方法 16 public abstract void attack(); 17 18 }
下面是ADHero类
1 public class ADHero extends Hero implements AD { 2 3 public void physicAttack() { 4 System.out.println("进行物理攻击"); 5 } 6 7 @Override 8 public void attack() { 9 physicAttack(); 10 } 11 12 }
ADHero类继承Hero类,attack方法也得到实现
下面是APHero类
1 public class APHero extends Hero implements AP { 2 3 @Override 4 public void magicAttack() { 5 System.out.println("进行魔法攻击"); 6 } 7 8 @Override 9 public void attack() { 10 magicAttack(); 11 } 12 13 }
APHero类继承Hero类,attack方法也得到不同的实现
补充:
1.一个类可以在不提供抽象方法的情况下,声明为抽象类,不过该类不可直接实例化
2.抽象类和接口的区别:
1.抽象类的子类只能继承一个抽象类,不能继承多个抽象类
接口子类可以实现多个接口
2.抽象类可以定义public protected package private 静态和非静态 final和非final属性
接口在声明是只能是public 静态的 final的即使没有显式的声明