对象:
在面向对象编程中,现实世界的所有事物都被视为对象,对象是存在的具体实体,具有明确定义的状态和行为。比如说某某学生,某某老师等等都是对象。
类:
(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.
相关推荐
- **类定义**: C++中用来描述一类对象的共同特征和行为的概念。它是一个抽象数据类型,包含了数据成员和成员函数。 - **成员函数**: 定义在类中的函数,用于实现类的行为。 - **数据成员**: 定义在类中的变量,用于...
JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...
类是创建对象的根源,它定义了同一类对象共有的属性和方法。类中的属性(Attribute)可以理解为对象所拥有的变量,而方法(Method)则是对象可以执行的操作或行为。 对象(Object)是类的实例(Instance),是具有...
本章的"【第5章:面向对象基础】_面向对象、类与对象的定义"将详细讲解面向对象编程的核心概念,包括如何定义类、创建对象,以及如何利用继承和多态性设计高效的程序。通过学习,你将能更好地理解和应用Java的面向...
在本实验“Java类与对象”中,我们深入学习了Java面向对象编程的基本概念和实践。面向对象编程(OOP)是一种程序设计思想,它强调数据和操作数据的方法结合在一起,形成一个独立的对象,以此来组织和管理代码。与...
类与对象.ppt 讲的很具体。主要涉及基础概念,构造函数,析构函数等
C#是一种面向对象的编程语言,其核心概念之一就是类与对象之间的关系。类是对象的模板或蓝图,它定义了创建对象的属性和方法。对象则是类的具体实例,是实际存在的实体。 在C#中,创建类意味着定义了一组属性和方法...
c++类与对象实习举例。
c++ 习题 4类与对象.doc (选择 解答 填空)
在编程世界里,类与对象是面向对象编程(OOP)的核心概念,它们为我们提供了抽象、封装、继承和多态等重要特性。本教程“类与对象的分析与设计”将深入探讨如何从实际问题中抽离出这些概念,以便进行高效、结构化的...
常对象(Const Object)是指声明为const的类对象,它的成员函数不能修改数据成员。常成员函数(Const Member Function)是在类定义中声明为const的函数,它承诺不修改对象的状态。 最后,对象在内存中的分布情况...
在Java编程语言中,"类"与"对象"是核心概念,它们构成了面向对象编程的基础。本文将深入探讨这两个概念,以及如何在实际编程中应用它们。 首先,我们需要理解"类"。在Java中,类可以看作是蓝图或者模板,它定义了一...
在Java编程语言中,"类与对象教学(1)"是一个重要的学习主题,它涵盖了面向对象编程的基本概念,对比了面向对象编程(OOP)与面向过程编程(POP),并深入探讨了类、对象以及如何在实际开发中创建和使用它们。...
### Java类与对象详解 #### 一、面向对象编程的核心理念 面向对象编程(OOP)是一种编程范式,其核心在于将现实世界中的事物抽象为计算机中的对象,通过对象来模拟和处理复杂的问题。这一理念源于试图让编程更加...
在编程世界中,类与对象是面向对象编程(OOP)的核心概念。面向对象编程是一种设计和实现软件的方法,它基于“对象”的概念,而这些对象则是类的实例。类可以看作是创建对象的蓝图,它定义了对象的数据属性和行为。...
【Java程序设计】类与对象是Java编程的核心概念,它们是面向对象编程的基础。类是对具有相似属性和行为的事物的抽象,而对象是类的实例,代表着具体存在的个体。 在【描述】中,该教案是为了2021年的高校教师资格证...
C++ 类与对象练习题带答案 本资源是一个 C++ 编程语言的练习题集,涵盖了类与对象的基础知识。练习题分为选择题和填空题两部分,涵盖了类的定义、对象的声明、成员函数、访问权限、继承等关键概念。 选择题 1. ...