今天学习java的继承看见了一个很有意思的例子。
在LOL中,武器是物品的一种,也是有名称和价格的
所以在设计类的时候,可以让武器继承物品,从而继承名称和价格属性
步骤 1 : 物品类Item
物品类Item 有属性 name,price
public class Item {
String name;
int price;
}
步骤 2 : 武器类Weapon(不继承)
武器类: Weapon不继承Item的写法
独立设计 name和price属性
同时多了一个属性 damage 攻击力
public class Weapon{
String name;
int price;
int damage; //攻击力
}
步骤 3 : 武器类Weapon(继承类Item)
这一次Weapon继承Item
虽然Weapon自己没有设计name和price,但是通过继承Item类,也具备了name和price属性
public class Weapon extends Item{
int damage; //攻击力
public static void main(String[] args) {
Weapon infinityEdge = new Weapon();
infinityEdge.damage = 65; //damage属性在类Weapon中新设计的
infinityEdge.name = "无尽之刃";//name属性,是从Item中继承来的,就不需要重复设计了
infinityEdge.price = 3600;
}
}
接下来看一下练习:
设计一个类Armor护甲
继承Item类,并且额外提供一个属性ac: 护甲等级 int类型
实例化出两件护甲
名称 价格 护甲等级
布甲 300 15
锁子甲 500 40
代码如下:
//Item.java
public class Item {
private String name;
private int price;
Item(String name,int price){this.name = name;this.price = price;}
}
// Armor.java
public class Armor extends Item{//Armor类继承Item类
private int ac;
public Armor(String name, int price,int ac) {//构造函数
super(name, price);//先初始化父类Item
this.ac = ac;
}
@Override
public String toString() {//打印
return "Armor [ac=" + ac + "]";
}
public static void main(String[] args) {
Armor cloth = new Armor("布甲",300,15);
Armor chainMail = new Armor("锁子甲",500,40);
System.out.println(cloth.toString());
System.out.println(chainMail.toString());
}
}
结果如下: