java是一门面向对象的编程语言,类与对象是其最基本的概念。所谓对象,就是一个个具体的物体,一个人,一台电脑,都是对象。而类,就是对象的一种抽象,是多个对象具有的共性的一种集合,其中包含了属性与方法,就是属于该类的对象所具有的共性。当一个类创建了对象,这个对象就拥有了该类全部的属性,方法。相比于结构化的编程思路,面向对象更适用于人的思维方式。这可能就是java如此流行的原因之一。
一个类在另一个类中不能直接被调用,而是通过创建对象。类也可以继承另一个类,即子类继承父类,子类能继承父类所有的方法和属性,在此之外,子类可以写自己的方法,添加属性,或者重写父类中的方法。继承可以提高代码的重用率,增加代码的结构化。
属性与方法在类中可以被定义成公有或私有,私有则不能在别的类中被直接调用,需要为该方法或属性添加set,get方法。通常定义成私有是为了保护数据,避免其他调用者随意更改。
下面以一个奥特曼与小怪兽,boss之间打斗的例子来说明类与对象的具体用法:
定义一个fight类,用于奥特曼打小怪兽,boss,其中的属性有血量,攻击值,方法是fight,给怪兽,boss减血。
public class Fight {
private String name;
private int blood; //血量
private int power; //攻击
public Fight(String name,int blood,int power){ //构造函数,用于赋初始值
this.name=name;
this.power=power;
this.blood=blood;
}
//访问name //给私有成员增加get,set方法
public String getname(){
return this.name;
}
//访问blood
public int getblood(){
return this.blood;
}
//访问攻击值
public int getpower(){
return this.power;
}
//给blood ,power重新赋值
public void setblood(int bloodvalue){
this.blood=bloodvalue;
}
public void setpower(int powervalue){
this.power=powervalue;
}
//奥特曼打小怪兽 boss
public void fighter1(Fight2 figh,Fight3 fighter3 )
{
figh.setblood(figh.getblood()-power);
System.out.println(name+"正在攻击"+figh.getname()+" "+
figh.getname()+"血量减少"+power+ "现在血量是"+figh.getblood());
fighter3.setblood(fighter3.getblood()-power);
System.out.println(name+"正在攻击"+fighter3.getname()+" "+fighter3.getname()+"血量减少了"+power+
"现在血量是"+fighter3.getblood());
if(figh.getblood()<=0&&fighter3.getblood()<=0)
{
System.out.println(getname()+"win!");
}
else {
figh.fighter2(this,fighter3);
}
}
}
接下来的Fight2,Fight3类与fight类类似,在此就不再赘述
public class Fight2 {
private String name;
private int blood; //血量
private int power; //攻击
public Fight2(String name,int blood,int power){
this.name=name;
this.power=power;
this.blood=blood;
}
//访问name
public String getname(){
return this.name;
}
//访问blood
public int getblood(){
return this.blood;
}
//访问攻击值
public int getpower(){
return this.power;
}
//给blood ,power重新赋值
public void setblood(int bloodvalue){
this.blood=bloodvalue;
}
public void setpower(int powervalue){
this.power=powervalue;
}
//小怪兽打奥特曼 小怪兽打boss
public void fighter2(Fight fi,Fight3 fighter3){
int bloodx=fi.getblood();
bloodx=bloodx-power;
fi.setblood(bloodx);
System.out.println(name+"正在攻击"+fi.getname()+" "+
fi.getname()+"血量减少"+power+ "现在血量是"+fi.getblood());
fighter3.setblood(fighter3.getblood()-power);
System.out.println(name+"正在攻击"+fighter3.getname()+" "+fighter3.getname()+"血量减少了"+power+
"现在血量是"+fighter3.getblood());
if(fi.getblood()<=0&&fighter3.getblood()<=0)
{
System.out.println(getname()+"win!");
}
else {
fighter3.fight3(fi,this);
}
}
}
public class Fight3 {
private String name;
private int blood;
private int power;
//赋初值
public Fight3(String name,int blood,int power){
this.name=name;
this.power=power;
this.blood=blood;
}
//访问name
public String getname(){
return this.name;
}
//访问blood
public int getblood(){
return this.blood;
}
//访问攻击者值
public int getpower(){
return this.power;
}
//给blood ,power重新赋值
public void setblood(int bloodvalue){
this.blood=bloodvalue;
}
public void setpower(int powervalue){
this.power=powervalue;
}
public void fight3(Fight fi,Fight2 figh){
//boss打奥特曼
fi.setblood(fi.getblood()-power);
System.out.println(name+"正在攻击"+fi.getname()+" "+
fi.getname()+"血量减少了"+power+
"现在血量是"+fi.getblood());
//boss打小怪兽
figh.setblood(figh.getblood()-power);
System.out.println(name+"正在攻击"+figh.getname()+" "+figh.getname()+"血量减少了"+power+
"现在血量是"+figh.getblood());
if(fi.getblood()<=0&&figh.getblood()<=0){
System.out.println(getname()+" win!");
}
else{
fi.fighter1(figh, this);
}
}
}
相关推荐
NULL 博文链接:https://xiangpin.iteye.com/blog/1668307
浅谈java面向对象和引用,初学java的一些疑惑点
浅谈Java面向对象程序设计.pdf
浅谈Java输入输出流的使用。 Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。在Java类库中,IO部分的内容是很庞大的,因为它涉及...
java包的使用。在自定义的java包中调用其他的类对象的方法。这是我今天下午的学习心得。希望可以给大家点帮助。
在Java中,有一组名词经常一起出现,它们是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然。我们来一起了解一下对象和对象引用之间的区别和联系。 1....
浅谈对象、类。在学习Java的初期,我们个别人会因刚入门而对对象与类理解陷入困难,在此我用一个例子来表达我的理解。
下面小编就为大家带来一篇浅谈Java内存区域与对象创建过程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了浅谈Java实现面向对象编程java oop,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了浅谈Java实体对象的三种状态以及转换关系,具有一定参考价值,需要的朋友可以,看看。。
Java 对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized 关键 字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized 关键字 的作用进行深入了解才可定论。 总的说来,...
现在是计算机网络时代,随着计算机的发展,Java己经成为一个主流,从它的开发到现在的成熟,经过几个阶段的探索,才完成...它与别的编辑语言来比具有其自己的特点:平台无关性、安全性、面向对象、多线程、可扩展性等.
下面小编就为大家带来一篇浅谈java面向对象(类,封装,this,构造方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了浅谈java对象之间相互转化的多种方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
本文主要对java中的对象、类、与方法的重载进行简要概述,具有一定的参考价值,需要的朋友一起来看下吧
主要介绍了浅谈java面向对象中四种权限,具有一定借鉴价值,需要的朋友可以参考下。
下面小编就为大家带来一篇浅谈java web中常用对象对应的实例化接口。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了浅谈Java回收对象的标记和对象的二次标记过程的相关内容,小编觉得还是挺不错的,这里给大家分享一下,需要的朋友可以参考。
类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就简单给大家介绍一下。