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的即使没有显式的声明

 

posted @ 2020-01-30 14:18  东功  阅读(159)  评论(0编辑  收藏  举报