JAVA的 继承

今天学习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());
	}
}

结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/88973048