abstract关键字基础应用

!!!【前提】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();
	}
}

小知识点!!

  1. abstract修饰的方法 没有方法体
  2. abstract修饰的方法,要求定义在abstract修饰的类内,或者接口interface内
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值