对象:
在面向对象编程中,现实世界的所有事物都被视为对象,对象是存在的具体实体,具有明确定义的状态和行为。比如说某某学生,某某老师等等都是对象。
类:
(1)类是一个模板。对对象的特征和行为进行的定义,定义成一个相应的模板。它由属性和方法两个关键部分组成。通俗的来说,属性就是对象的特征,学生都有名字,学号,学分等属性。而方法就是对象的行为,比如说老师在上课,老师在备课等等。
(2)类中定义了具体对象所共有的属性和方法,通过这个模板生成具体的对象,调用每个对象自己的方法,改变属性的值。
(3)类的基本格式
public class 类名 {//类名必须和文件名相同 //定义属性的格式 private 数据类型 属性名; //方法的格式 public 返回值数据类型 方法名(数据类型 形参名,...){ } }
方法:方法分为普通方法和构造方法
1)普通方法 :对象的行为
//语法格式 public 返回值数据类型 方法名(数据类型 形参名,...){ //方法体 } //定义一个无参数的学习的方法 public void study(){ score++; System.out.println(name+"学习中!"); } //定义一个有参数的学习方法 public void study(int hour){ score+=hour/2; System.out.println(name+"已学习"+hour+"小时"); }
2)构造方法 :实例化对象的方法
//语法格式 public 类名(数据类型 形参名,...){ //方法体 } public class Student(){ //无参构造器方法 public Student(){ } //有参数的构造器方法 public Student(String name){ this.name=name } }
注意:1.每个类都会默认得有一个无参的构造器,如果重新写了一个有参数的构造器,则默认的无参构造器就不能调用。
2.普通方法必须规定返回值的类型,而构造器方法没有任何返回值的定义,但并不代表构造器方法没有返回值。
3.构造器方法的名字必须于类名相同。
3)方法的重载(普通方法和构造器方法的重载):
实现方法重载的条件:1.方法名字必须要完全相同
2.方法所带的参数个数、参数类型、参数顺序,这三项中至少有一个不同。
重载方法的调用:根据参数调用重载后的方法
需要重载方法的情况:个人认为由于是实例化对象时对象的某些属性值使该对象的有些行为受到限制,即需要不同的方法来处理。
实例化对象
格式:类名 对象名 = new 类名();
值传递和引用传递
值传递适用于java的基本数据类型+String。 引用传递适用于Java的引用类型(对象类型)[类,抽象类,接口,数组 ]
练习:
回合制游戏:**角色和男爵Boss进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了!
**角色和小怪进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了!
(1)思路:1.根据游戏,定义四个类:Game类,Boss类,Monster类和Warrior类
2.每个对象都有名字和血量两个属性,有对战方法。其中Warrior先与Monster对战,如果打赢了,再和Boss对战,所以在Warrior类中运用了方法重载。
3.因为是回合制游戏,所以在Game中运用while循环。
//定义一个勇士类 public class Warrior { //名字和血量 private String name; private int 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 fight(Monster mon){ //mon对象减少血量的方法 mon.setBlood(mon.getBlood()-5); //输出对战的信息 System.out.println(mon.getName()+"被"+name+"攻击了!\n"+mon.getName()+"剩余的血量是"+mon.getBlood()); } //定义一个对战方法 public void fight(Boss boss){ //boss对象减少血量的方法 boss.setBlood(boss.getBlood()-10); //输出对战的信息 System.out.println(boss.getName()+"被"+name+"攻击了!\n"+boss.getName()+"剩余的血量是"+boss.getBlood()); } }
//定义一个Monster类 public class Monster{ //名字和血量 private String name; private int 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 fight(Warrior war){ //sol对象减少血量的方法 war.setBlood(war.getBlood()-1); //输出对战的信息 System.out.println(war.getName()+"被"+name+"攻击了!\n"+war.getName()+"剩余的血量是"+war.getBlood()); } }
//定义一个Boss类 public class Boss{ //名字和血量 private String name; private int 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 fight(Warrior war){ //sol对象减少血量的方法 war.setBlood(war.getBlood()-10); //输出对战的信息 System.out.println(war.getName()+"被"+name+"攻击了!\n"+war.getName()+"剩余的血量是"+war.getBlood()); } }
//定义Game类 public class Game { public static void main(String [] args){ //实例化Warrior类的对象 Warrior war = new Warrior(); war.setName("勇士"); war.setBlood(100); //实例化Boss类的对象 Boss boss = new Boss(); boss.setName("Boss"); boss.setBlood(100); //实例化一个Monster的对象 Monster mon = new Monster(); mon.setName("小怪"); mon.setBlood(50); //循环的条件 while(war.getBlood() > 0 && mon.getBlood() > 0){ war.fight(mon);//让勇士攻击mon if(mon.getBlood() <= 0){ System.out.println(war.getName()+"胜利!"); break; } mon.fight(war); if(war.getBlood() <= 0){ System.out.println(mon.getName()+"胜利!"); } } System.out.println("=================================================="); //循环的条件 while(war.getBlood() > 0 && boss.getBlood() > 0){ war.fight(boss);//让勇士攻击boss if(boss.getBlood() <= 0){ System.out.println(war.getName()+"胜利!"); break; } boss.fight(war); if(war.getBlood() <= 0){ System.out.println(boss.getName()+"胜利!"); } } } }
练习中遇到的问题:
在定义一个对战方法时,比如Boss和Warrior对战,在Boss类对战方法中应传给一个Warrior型的参数,比如Warrior war,而不是int blood.
相关推荐
JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...
在“java类与对象教学(2)”中,我们将深入探讨几个关键知识点:对象重构、`this`关键字、静态变量与静态方法,以及对象的进一步讨论和包的使用。 1. **对象重构**: 重构是改进代码结构的过程,不改变其外部行为,...
1. 类与对象:在Python中,一旦类定义完成,类本身就是一个对象,称为类对象。可以对类对象进行操作,如访问其方法和属性。而对象实例化是指创建类对象的实例,也即对象。每个对象在创建时都会自动获得一个指向自己...
本章的"【第5章:面向对象基础】_面向对象、类与对象的定义"将详细讲解面向对象编程的核心概念,包括如何定义类、创建对象,以及如何利用继承和多态性设计高效的程序。通过学习,你将能更好地理解和应用Java的面向...
c++类与对象实习举例。
讲述了C++中的类与对象的基本概念
c++ 习题 4类与对象.doc (选择 解答 填空)
"java类与对象实例" 在 Java 中,类和对象是两个紧密相连的概念。类是一种蓝图,用于创建对象,而对象是类的一个实例。类描述了对象的基本结构,包括属性、方法和事件等。类设计的关键概念包括封装、继承和多态。 ...
在编程世界里,类与对象是面向对象编程(OOP)的核心概念,它们为我们提供了抽象、封装、继承和多态等重要特性。本教程“类与对象的分析与设计”将深入探讨如何从实际问题中抽离出这些概念,以便进行高效、结构化的...
常对象(Const Object)是指声明为const的类对象,它的成员函数不能修改数据成员。常成员函数(Const Member Function)是在类定义中声明为const的函数,它承诺不修改对象的状态。 最后,对象在内存中的分布情况...
在Java编程语言中,"类与对象教学(1)"是一个重要的学习主题,它涵盖了面向对象编程的基本概念,对比了面向对象编程(OOP)与面向过程编程(POP),并深入探讨了类、对象以及如何在实际开发中创建和使用它们。...
### Java类与对象详解 #### 一、面向对象编程的核心理念 面向对象编程(OOP)是一种编程范式,其核心在于将现实世界中的事物抽象为计算机中的对象,通过对象来模拟和处理复杂的问题。这一理念源于试图让编程更加...
在编程世界中,类与对象是面向对象编程(OOP)的核心概念。面向对象编程是一种设计和实现软件的方法,它基于“对象”的概念,而这些对象则是类的实例。类可以看作是创建对象的蓝图,它定义了对象的数据属性和行为。...
本章重点讲解了类与对象的概念及其在Java中的应用。 首先,面向对象的基本思想是基于现实世界的抽象,通过对象、类、继承、封装、多态等概念来构建程序。这种编程方式更符合人类的思维模式,使得代码更易于理解和...
【Java程序设计】类与对象是Java编程的核心概念,它们是面向对象编程的基础。类是对具有相似属性和行为的事物的抽象,而对象是类的实例,代表着具体存在的个体。 在【描述】中,该教案是为了2021年的高校教师资格证...
C++ 类与对象练习题带答案 本资源是一个 C++ 编程语言的练习题集,涵盖了类与对象的基础知识。练习题分为选择题和填空题两部分,涵盖了类的定义、对象的声明、成员函数、访问权限、继承等关键概念。 选择题 1. ...
《面向对象技术与方法》08、类与对象这一章节深入探讨了类与对象的基本概念及其操作,下面我们将详细解析其中的关键知识点。 ### 类与对象的基本概念 类是面向对象编程中用于定义对象的蓝图或模板,它描述了一组...