一、继承
-
继承的本质是对某一批类的抽象化,从而实现对现实世界更好的建模。
-
extends的意思是"扩展||继承"。子类是父类的扩展,子类继承父类的属性、方法。
-
Java中类只有单继承,没有多继承!(一个子类只能有一个父类,但是一个父类可以有多个子类)
- 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
- 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
- 子类和父类之间,从意义上讲应该具有"is a"的关系
- ctrl + H 查看继承关系
- 在Java中,所有的类,都默认直接或间接继承Object
示例
- 在LOL中,武器(Weapon)、护甲(Armor)是物品(Item)的一种,也是有名称和价格的
- 所以在设计类的时候,可以让武器、护甲继承物品,从而继承名称和价格属性
- Item物品类(父类)
public class Item {//物品类(父类) // 私有属性 private String name;//名字 private int price;//价格 // get/set方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } }
- Weapon武器类(子类)
public class Weapon extends Item{//武器类(子类) 继承 物品类(父类) //武器类(子类)继承了 物品类(父类)的所有属性和方法(name名字、price价格) //武器类(子类)在 物品类(父类)基础上增加了 damage攻击力 private int damage;//攻击力 public int getDamage() { return damage; } public void setDamage(int damage) { this.damage = damage; } }
- Armor护甲类(子类)
public class Armor extends Item{//护甲类(子类) 继承 物品类(父类) //护甲类(子类)继承了 物品类(父类)的所有属性和方法(name名字、price价格) //护甲类(子类)在 物品类(父类)基础上增加了 AC防御力 private int AC;//防御力 public int getAC() { return AC; } public void setAC(int AC) { this.AC = AC; } }
- Application总测试类
public class Application {//总测试类 public static void main(String[] args) { //无尽之刃 3600 65 Weapon weapon = new Weapon(); weapon.setName("无尽之刃"); weapon.setPrice(3600); weapon.setDamage(65); System.out.print("名称:"+weapon.getName()+"\t"); System.out.print("价格:"+weapon.getPrice()+"\t"); System.out.println("攻击力:"+weapon.getDamage()); //布甲 300 15 Armor armor1 = new Armor(); armor1.setName("布甲 "); armor1.setPrice(300); armor1.setAC(15); System.out.print("名称:"+armor1.getName()+"\t"); System.out.print("价格:"+armor1.getPrice()+"\t"); System.out.println("防御力:"+armor1.getAC()); //锁子甲 500 40 Armor armor2 = new Armor(); armor2.setName("锁子甲"); armor2.setPrice(500); armor2.setAC(40); System.out.print("名称:"+armor2.getName()+"\t"); System.out.print("价格:"+armor2.getPrice()+"\t"); System.out.println("防御力:"+armor2.getAC()); } }