? ? 生活中,具体的某个事物就是一个对象,而根据对象相似的特征以及行为则能进行归类。在JAVA这一面向对象编程的语言中,类与对象的概念实际和现实生活中的类与对象极其相似,也可以说就是生活中类与对象的一种计算机语言化。在JAVA中,对象就是类的实例化。
? ? 类具有属性和方法,而属性大多私有,方法大多公有,这也和JAVA封装有关。而对于私有属性,既然不能直接调用,那么也就只能通过公有的方法来对私有属性进行操作。
? ? 对于一个类除去属性和普通方法,还有一个最为关键的东西,那就是构造方法,顾名思义,其就是在对象创建之时对其进行的初始化。说到类的创建,其中的new 关键字则是负责开辟一个新的内存空间,而构造方法则是将类实例化,并初始化属性。至于构造方法与普通方法的区别,其最重要的是构造方法的名字必须为类名,并且无返回值类型。
? ? 对于同名方法形参不同,则叫做方法的重载,而方法的重载则大大加大了程序的灵活性。顾名思义,方法重载也就是方法再次定义,但再次定义之时除去参数不一致以外,其他均是相同。
? ? 在类中,还有一个关键字,其叫做this。this,在英文中是这个的意思,是一个指示代词。而在类中,this代表的则是对象。
? ? 在学习类与对象的练习中,遇到的一个问题,就是怎么从这个类引用另一个类中构建的对象。其实很简单,通过在方法中增加类的形参就可以了。就与String一样,String也是一个类,既然String 也能写在方法中,那么其他自己定义的类又有何不可呢?
? ? 下面就是对类与对象所编的一个坑爹程序:
?
class="java" name="code">public class 盖伦和寒冰的回合制打斗 { public static void main(String [] args){ Dema gailun=new Dema(3500,18,180,150); Hanbing aixi=new Hanbing(1800,18,380,80); int i=0; String dema="qweaaraqaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",hanbing="rwaaawaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; while(aixi.getBlood()>0 && gailun.getBlood()>0){ i++; //开始攻击 埃希先上 if (i%2==1){ if(hanbing.charAt(i/2+1)=='a') aixi.a(gailun); else if(hanbing.charAt(i/2+1)=='w') aixi.w(gailun); else aixi.r(gailun); System.out.println(aixi.getName()+"攻击"+gailun.getName()+","+gailun.getName()+"还剩"+gailun.getBlood()+"点血"); } else{ if(dema.charAt(i/2)=='a') gailun.a(aixi); else if (dema.charAt(i/2)=='q') gailun.q(aixi); else if (dema.charAt(i/2)=='w') gailun.w(aixi); else if (dema.charAt(i/2)=='e') gailun.e(aixi); else gailun.r(aixi); System.out.println(gailun.getName()+"攻击"+aixi.getName()+","+aixi.getName()+"还剩"+aixi.getBlood()+"点血"); } } if (aixi.getBlood()<=0) System.out.println(gailun.getName()+" 终结 "+aixi.getName()+","+gailun.getName()+"已经接近神!"); else System.out.println(aixi.getName()+" 终结 "+gailun.getName()+","+aixi.getName()+"已经接近神!"); } } public class Dema{ //德玛西亚盖伦的基本属性 private String name="盖伦"; private int blood; private int level; private int gong; private int fang; //构造方法 public Dema(int blood,int level,int gong,int fang){ this.blood=blood; this.level=level; this.gong=gong; this.fang=fang; } public String getName(){ return name; } //获得与设置血量的方法 public int getBlood(){ return blood; } public void setBlood(int blood){ this.blood=blood; } //获得攻击力的方法 public int getGong(){ return gong; } //获得防御力的方法 public int getFang(){ return fang; } //平A与技能的方法 //盖伦平A的方法 public void a(Hanbing hanbing){ hanbing.setBlood(hanbing.getBlood()-gong+hanbing.getFang()); } //盖伦Q的方法 public void q(Hanbing hanbing){ hanbing.setBlood(hanbing.getBlood()-(int)(gong*1.4)+hanbing.getFang()); } public void w(Hanbing hanbing){ hanbing.setBlood(hanbing.getBlood()-(int)(gong*1.5)+hanbing.getFang()); } public void e(Hanbing hanbing){ hanbing.setBlood(hanbing.getBlood()-(int)(gong*1.6)+hanbing.getFang()); } public void r(Hanbing hanbing){ hanbing.setBlood(hanbing.getBlood()-(int)(gong*1.85)+hanbing.getFang()); } } public class Hanbing { private String name="埃希"; private int blood; private int level; private int gong; private int fang; //构造方法 public Hanbing(int blood,int level,int gong,int fang){ this.blood=blood; this.level=level; this.gong=gong; this.fang=fang; } public String getName(){ return name; } //防御获取 //获得与设置血量的方法 public int getBlood(){ return blood; } public void setBlood(int blood){ this.blood=blood; } //获得攻击力的方法 public int getGong(){ return gong; } //获得防御力的方法 public int getFang(){ return fang; } //平A与技能的方法 public void a(Dema dema){ dema.setBlood(dema.getBlood()-gong+dema.getFang()); } public void w(Dema dema){ dema.setBlood(dema.getBlood()-(int)(gong*1.5)+dema.getFang()); } public void r(Dema dema){ dema.setBlood(dema.getBlood()-(int)(gong*1.7)+dema.getFang()); } }
?
??
?
?
?