类是抽象的概念,而对象是具体的的概念。类是对象的抽象化,对象则是类的具体化。
了解了类和对象后,做一个简单的奥特曼打小怪兽的练习。要做奥特曼打小怪兽,首先要定义三个类,一个用于描述奥特曼的特征和行为,一个用于描述小怪兽的特征和行为,还有一个就是来实现打斗的类。确定了所需的类后,就可以开始分析每个类所需要实现的功能:奥特曼类和小怪兽类主要是用于存储各自的“信息”(即属性和成员函数),打斗的类用于实现奥特曼和小怪兽重复相互攻击,直到一方血量为0时,输出另一方获胜。有了这些就可以着手进行程序的编写了。
在编写过程中难免会出现错误:
错误:奥特曼类的属性name在怪兽类中不可见
原因:奥特曼类的属性是私有(private)属性,在怪兽类中是无法访问的
扩充:java中的访问修饰符有四种:
公有的(public):只要在同一个项目中就可以被访问
私有的(private):只能在当前类中才可以被访问
受保护的(protected):只要在同一个包下或者存在继承关系的子类中可以被访问
默认的:只要在同一个包(文件夹)下就可以被访问
解决措施:增加一个存者setter,一个传者getter。它们作为与外界进行沟通的桥梁,使其他类可以通过此方法访问该类中私有属性而不会报错。
代码如下:
//定义一个奥特曼类
public class Aoteman {
//属性
private String name;
private int blood;
//构造方法
public Aoteman(String name,int blood){
this.name=name;
this.blood=blood;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
//打的方法
public void play(Monster mon){
System.out.println(name+"打了"+mon.getName()+","+mon.getName()+"的血量减少了"+20);
mon.setBlood(mon.getBlood()-20);
System.out.println(mon.getName()+"的血量剩余"+mon.getBlood());
}
//定义一个怪兽类
public class Monster{
//属性
private String name;
private int blood;
//构造方法
public Monster(String name,int blood){
this.name=name;
this.blood=blood;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
//打的方法
public void play(Aoteman ao){
System.out.println(name+"打了"+ao.getName()+","+ao.getName()+"的血量减少了"+15);
ao.setBlood(ao.getBlood()-15);
System.out.println(ao.getName()+"的血量剩余"+ao.getBlood());
}
}
//定义一个打斗的类
public class Play {
//主函数
public static void main(String[] args) {
//实例化对象
Monster mon=new Monster("小怪兽",200);
Aoteman ao=new Aoteman("奥特曼",150);
while(ao.getBlood()>0&&mon.getBlood()>0){
ao.play(mon);
if(mon.getBlood()<=0)
System.out.println(ao.getName()+"赢了");
else
mon.play(ao);
if(ao.getBlood()<=0)
System.out.println(mon.getName()+"赢了");
}
}
}
运行结果如下:
奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余180 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余135 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余160 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余120 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余140 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余105 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余120 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余90 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余100 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余75 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余80 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余60 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余60 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余45 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余40 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余30 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余20 小怪兽打了奥特曼,奥特曼的血量减少了15 奥特曼的血量剩余15 奥特曼打了小怪兽,小怪兽的血量减少了20 小怪兽的血量剩余0 奥特曼赢了
相关推荐
本文实例讲述了Python面向对象之类和对象。分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态); 属性一般是一个个变量;方法是一个个函数; #类的属性 就是 类变量 #...
【JAVA 教学 PPt(接口,类和对象尤其详尽)】 在Java编程语言中,接口、类和对象是核心概念,对于理解和构建复杂的软件系统至关重要。让我们深入探讨这些主题。 1. 接口(Interface): Java中的接口是一种完全...
"C++ 类和对象"是C++编程中的核心概念,它们是实现面向对象编程(OOP)的基础。在这个主题中,我们将深入探讨类与对象的概念、它们的作用以及如何在实际编程中使用它们。 类是C++中的一个关键构造,可以看作是创建...
在编程世界中,Java是一种广泛使用的面向对象的编程语言,其核心概念之一就是"类"和"对象"。本教学资料包"类和对象object.zip"聚焦于Java中的这一关键主题,旨在帮助S1课程的学生深入理解程序逻辑,通过实例教学、...
对象是类的实例,类则定义了对象的属性(数据)和行为(方法)。在C++中,类是构建面向对象程序的基本构造块。 1. **面向对象程序设计的基本概念**: - **对象**:对象是现实世界中实体的抽象,具有特定的属性和...