类是抽象的概念,而对象是具体的的概念。类是对象的抽象化,对象则是类的具体化。
了解了类和对象后,做一个简单的奥特曼打小怪兽的练习。要做奥特曼打小怪兽,首先要定义三个类,一个用于描述奥特曼的特征和行为,一个用于描述小怪兽的特征和行为,还有一个就是来实现打斗的类。确定了所需的类后,就可以开始分析每个类所需要实现的功能:奥特曼类和小怪兽类主要是用于存储各自的“信息”(即属性和成员函数),打斗的类用于实现奥特曼和小怪兽重复相互攻击,直到一方血量为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 奥特曼赢了
相关推荐
【JAVA 教学 PPt(接口,类和对象尤其详尽)】 在Java编程语言中,接口、类和对象是核心概念,对于理解和构建复杂的软件系统至关重要。让我们深入探讨这些主题。 1. 接口(Interface): Java中的接口是一种完全...
在编程世界中,Java是一种广泛使用的面向对象的编程语言,其核心概念之一就是"类"和"对象"。本教学资料包"类和对象object.zip"聚焦于Java中的这一关键主题,旨在帮助S1课程的学生深入理解程序逻辑,通过实例教学、...
Java面向对象设计类和对象 Java面向对象设计类和对象是面向对象程序设计的基础,它将现实世界模型自然延伸到程序设计中。类和对象是面向对象设计的核心概念,类描述对象的属性和行为,对象是类的实例,是一个实实在...
类和对象的定义类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量
java关于类和对象课件,类的继承 方法的重写 Object类 对象转型 多态
在深入探讨C++编程语言的面向对象编程特点时,我们需要理解类和对象的相关概念。C++是一种支持面向对象的编程语言,而面向对象编程(OOP)的中心思想是将数据以及与数据相关的操作封装在一起,形成对象,以解决特定...
C++是一种强大的面向对象编程(OOP)语言,它的核心特性之一就是类和对象。类是C++中定义数据类型的方式,它封装了数据和操作这些数据的方法,而对象则是类的实例,代表着程序中的实体或者概念。在这个“C++类和对象...
通过书籍,个人整理的java基础之类的对象的定义的有关知识点
JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: 构造方法是类的特殊方法,...
java类和对象练习题.docx
对JAVA学习中的类和对象进行详细介绍,很好的编程学习资料
C++类和对象上机练习,相当好的东西,值得参考!希望对你有用!
在编程世界中,类和对象是面向对象编程(OOP)的核心概念,它们构成了许多现代编程语言的基础。这里,我们将会深入探讨“类”和“对象”的概念,并结合标签“源码”和“工具”,来阐述如何在实际的软件开发过程中...
这个是c++类和对象的课件,与大家分享下
C++类和对象 C++类和对象是面向对象编程(OOP)的基础概念,类是对对象的抽象描述,对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。现实中的对象都具有属性和行为。 类的概念 在C++中,类是一种...
综上所述,谭浩强的《C++类和对象》主要讲解了面向对象程序设计的基本概念,包括对象、类、封装性、信息隐蔽、抽象、继承和多态性。通过理解和掌握这些概念,开发者能够更有效地设计和构建大型、复杂的软件系统。在...
Java是一种面向对象的编程语言,它的核心概念之一就是“类”和“对象”。理解这两个概念是学习Java的基础,也是编写复杂程序的关键。 首先,我们来解释什么是“类”。在Java中,类可以看作是创建对象的蓝图或者模板...
Java编程中的类和对象是面向对象编程的核心概念。面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它基于“对象”的概念,强调数据和操作数据的方法结合在一起,提供更好的代码组织和可维护性。 ...
在这个C++实验报告中,我们关注的是类和对象的高级应用,这涵盖了构造函数、复制构造函数、析构函数、静态成员变量、静态成员函数以及友元函数等核心概念。 首先,构造函数是用于初始化对象的特殊函数。在这个实验...
这是关于C++类和对象特性的思维导图,更加详细的解释请查看我的个人博客