每日学习-Java基础(十)接口和继承9(抽象类)

一、抽象类

1、引入

// 类中声明一个方法,该方法没有方法体,即“空方法”
// “空方法”,即抽象方法,abstract修饰
// 当一个类有抽象方法时,该类必须声明为抽象类

不是抽象类,报错。
在这里插入图片描述

package ia9_abstract;

public abstract class Hero {
	protected String name;
	protected float hp;
	protected int armor;
	protected int moveSpeed;
	
	// 抽象类
	// 抽象方法,没有方法体
	public abstract void attack();
}

2、特点
// 子类必须实现父类抽象方法

package ia9_abstract;

public class ADHero extends Hero implements AD {

	@Override
	public void phsyicAttack() {
		// TODO Auto-generated method stub
		System.out.println("进行物理攻击");
	}

	// 实现父类抽象方法
	@Override
	public void attack() {
		// TODO Auto-generated method stub
		phsyicAttack();
	}
}

// 抽象类可以没有抽象方法
// 一旦声明为抽象类,不能直接实例化
// Cannot instantiate the type Hero

在这里插入图片描述
二、抽象类 VS 接口

// 区别1
// 抽象类,子类只能继承一个抽象类
RealHero只能实现Hero,Item类中的一个

package ia9_abstract2;

public abstract class Hero {
	public final static int ItemTotalNumber = 6;
	public String name;
	float hp;
	protected int armor;
	private int moveSpeed;

	public abstract void attack();	
}
package ia9_abstract2;

public abstract class Item {
	protected String name;
	protected float price;

	public void buy() {
		System.out.println("买买买");
	}

	public abstract void effect();
}

在这里插入图片描述
// 接口,子类可以实现多个接口
ADAPHero可以实现AD、AP接口
详见链接
https://blog.csdn.net/weixin_41117393/article/details/103677557

// 区别2
// 抽象类,属性可以是public,default,protected,private,static,final中任意一个或多个修饰
如区别1,Hero类属性所示;
// 接口,属性只能是public static final修饰
如下所示,使用其他修饰符将报错。
// Illegal modifier for the interface field AD.i; only public, static & final are permitted
在这里插入图片描述
// 区别3
// 抽象类,方法可以是实体方法,抽象方法;
如区别1,Item类所示。有实体方法(有具体实现),有抽象方法(空,无具体实现)
// 接口,方法可以是默认方法(实体方法,与抽象类中实体方法不同),空方法(抽象方法)。
默认方法待解锁,空方法(无具体实现)。

三、练习
// 为Item类设计抽象方法disposable(),返回值为布尔类型;
// LifePotion、MagicPotion、Weapon、Armor分别继承Item类,并实现抽象方法disposable();
// LifePotion、MagicPotion返回true,使用后消失;
Weapon、Armo返回false,武器使用后仍然存在。

我的学习源泉:https://how2j.cn/k/interface-inheritance/interface-inheritance-abstract-class/314.html?p=114999
Java自学网站:https://how2j.cn?p=114999

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值