概念
对象
任何一个 实际的物体 都可以称之为一个对象。
这意味着每一个对象都有具体的属性,相当于每一个单独的人
类
将一群对象根据他们的某一特性,整合成一个抽象的概念集合,称之为类
类相当于一群具有相同特征的对象,比如“男人”、“程序员”
实例:王者荣耀英雄
特点:
对象
- 每个人操纵的每个英雄都是对象
- 每种英雄有相同的特点
类
- 每个英雄都是不同的类
- 每个英雄(类)都有其不同的特征
代码
public class houyi {
public String id;
public String name;
public int hp;
public int ad;
//攻击方法
public void ackA(libai lb) {
lb.hp -= ad;
System.out.println("由id:"+id+"操控的"+name+"攻击了 id:"+lb.id+"的"
+lb.name+" :造成了"+ad+"点伤害, 李白还剩下"+lb.hp+"点血量值");
}
public void ackboss(boss bs) {
bs.hp -= ad;
System.out.println("由id:"+id+"操控的"+name+"攻击了boss:造成了"
+ad+"点伤害, boss还剩下"+bs.hp+"点血量值");
}
}
继承
我们可以发现,许多英雄具有相同的特征,比如共同的:
- 名字
- 血量
- 攻击力
所以我们可以建立一个类来储存这些公共的特征,并把这样的类成为父类
java实现
父类
public class hero {
//公共的信息
String name;
int hp;
int ad;
//简单的攻击策略
public void ack(hero ho) {
ho.hp -=ad;
}
}
子类A:
//用关键词extends继承父类
public class A extends hero{
//自己独特的特殊攻击部分
int sp_ad=20;
//继承父类的攻击函数
public void ack(hero ho) {
ho.hp-=ad+sp_ad;
System.out.println("A对B造成"+(ad+sp_ad)+"点伤害,B还剩下"+ho.hp+"点血量值.");
sp_ad+=20;
}
}
子类B
public class B extends hero{
//特殊的攻击部分
int sp_ad=1;
public void ack(hero ho) {
//与A不同的攻击模式
ho.hp-=ad*sp_ad;
sp_ad++;
System.out.println("B对A造成"+(ad*sp_ad)+"点伤害,A还剩下"+ho.hp+"点血量值.");
}
}
主函数
public class manage {
public static void main(String []args) {
//初始化各个英雄的值
A ahero=new A();
ahero.name="HHH";
ahero.hp=150;
ahero.ad=50;
B bhero=new B();
bhero.name="LLL";
bhero.hp=200;
bhero.ad=30;
//开始循环攻击
while(ahero.hp>0&&bhero.hp>0)
{
ahero.ack(bhero);
bhero.ack(ahero);
}
}
}
验证截图: