!!!【前提】abstract修饰的方法,子类必须重写!!!
/**
* LOL英雄类,每一个英雄都有QWER技能
*
* @author XDreamX
*/
/*
* 第一步:
* 使用abstract关键字修饰要求子类重写的方法
* 【方法报错】
* Abstract methods do not specify a body
* abstract修饰的方法没有方法体
* 【Eclipse快速修复】
* Ctrl + 1
* 选择 Remove Method Body 删除方法体
*
* 第二步:
* 【方法报错】
* The abstract method q in type LOLHero can only be defined by an abstract class
* LOLHero类内的abstract修饰方法q(),有且只能定义在一个abstract修饰的类内
* 【类名报错】
* The type LOLHero must be an abstract class to define abstract methods
* LOLHero类必须是一个abstract类,才可以定义abstract方法
* 【语法要求】
* abstract修饰的方法,必须在定义在abstract修饰的类内或者XXXXXXXXXXXXX
* 【Eclipse快速修复】
* Ctrl + 1
* 选择 Make Type 'LOLHero' abstract 使用abstract修饰LOLHero类
*
* 第三步:
* 【子类报错】
* The type Thresh must implement the inherited abstract method LOLHero.q()
* Thresh类必须实现继承LOLHero类内的abstract方法q
* 因为abstract修饰的方法,在父类abstract类内没有方法体,子类如果想要使用abstract修饰的方法
* 必须完成方法体的实现
* 【Eclipse快速修复】
* Ctrl + 1
* 选择 Add unimplemented methods 添加未实现方法
*/
abstract class LOLHero {
abstract public void q();
abstract public void w();
abstract public void e();
abstract public void r();
}
/**
* 锤石类继承LOLHero类
*
* @author XDreamX
*
*/
class Thresh extends LOLHero {
@Override
public void q() {
System.out.println("死亡判决");
}
@Override
public void w() {
System.out.println("魂引之灯");
}
@Override
public void e() {
System.out.println("厄运钟摆");
}
@Override
public void r() {
System.out.println("幽冥监牢");
}
}
/**
* 维鲁斯类继承LOLHero类
*
* @author XDreamX
*
*/
class Varus extends LOLHero {
@Override
public void q() {
System.out.println("穿刺之箭");
}
@Override
public void w() {
System.out.println("枯萎箭袋");
}
@Override
public void e() {
System.out.println("恶灵箭雨");
}
@Override
public void r() {
System.out.println("腐败链锁");
}
}
public class Demo1 {
public static void main(String[] args) {
Thresh asen = new Thresh();
asen.q();
asen.e();
asen.w();
asen.r();
System.out.println("--------------------------");
Varus varus = new Varus();
varus.q();
varus.w();
varus.e();
varus.r();
}
}
小知识点!!
- abstract修饰的方法 没有方法体
- abstract修饰的方法,要求定义在abstract修饰的类内,或者接口interface内