对象:
在面向对象编程中,现实世界的所有事物都被视为对象,对象是存在的具体实体,具有明确定义的状态和行为。比如说某某学生,某某老师等等都是对象。
类:
(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. 构造方法的调用方式: ...
在本篇讨论中,我们将深入理解“类与对象的应用”,探讨如何定义类、控制类成员的访问权限以及如何利用构造函数和析构函数来管理对象的生命周期。 1. **类的基本概念** 类是面向对象编程的核心,它是描述一类具有...
在本实验"3类与对象基础实验(一)"中,我们主要探讨的是Java编程语言中的核心概念——类和对象。这个实验是针对浙江大学城市学院2009级学生的,旨在帮助他们深入理解和掌握面向对象编程的基础。 首先,我们要了解...
类是创建对象的根源,它定义了同一类对象共有的属性和方法。类中的属性(Attribute)可以理解为对象所拥有的变量,而方法(Method)则是对象可以执行的操作或行为。 对象(Object)是类的实例(Instance),是具有...
1. 类与对象:在Python中,一旦类定义完成,类本身就是一个对象,称为类对象。可以对类对象进行操作,如访问其方法和属性。而对象实例化是指创建类对象的实例,也即对象。每个对象在创建时都会自动获得一个指向自己...
在本实验“Java类与对象”中,我们深入学习了Java面向对象编程的基本概念和实践。面向对象编程(OOP)是一种程序设计思想,它强调数据和操作数据的方法结合在一起,形成一个独立的对象,以此来组织和管理代码。与...
类与对象.ppt 讲的很具体。主要涉及基础概念,构造函数,析构函数等
C#是一种面向对象的编程语言,其核心概念之一就是类与对象之间的关系。类是对象的模板或蓝图,它定义了创建对象的属性和方法。对象则是类的具体实例,是实际存在的实体。 在C#中,创建类意味着定义了一组属性和方法...
c++类与对象实习举例。
### 第十章 类与对象 —— C++ 重难点知识详解 #### 一、引言 C++ 是一种广泛应用于工业界的编程语言,它既继承了 C 语言的强大功能,又引入了面向对象编程(OOP)的概念。面向对象编程的核心在于类与对象的设计与...
"java类与对象实例" 在 Java 中,类和对象是两个紧密相连的概念。类是一种蓝图,用于创建对象,而对象是类的一个实例。类描述了对象的基本结构,包括属性、方法和事件等。类设计的关键概念包括封装、继承和多态。 ...
C++ 类与对象经典讲解 本文将详细讲解 C++ 中的类与对象,包括类的定义、对象的创建、构造函数、析构函数、类的其他成员、类的包含等重要概念。 一、类的定义 在 C++ 中,类 (Class) 是面向对象程序设计(OOP)的...
在Java编程语言中,"类"与"对象"是核心概念,它们构成了面向对象编程的基础。本文将深入探讨这两个概念,以及如何在实际编程中应用它们。 首先,我们需要理解"类"。在Java中,类可以看作是蓝图或者模板,它定义了一...
### Java类与对象详解 #### 一、面向对象编程的核心理念 面向对象编程(OOP)是一种编程范式,其核心在于将现实世界中的事物抽象为计算机中的对象,通过对象来模拟和处理复杂的问题。这一理念源于试图让编程更加...
在编程世界中,类与对象是面向对象编程(OOP)的核心概念。面向对象编程是一种设计和实现软件的方法,它基于“对象”的概念,而这些对象则是类的实例。类可以看作是创建对象的蓝图,它定义了对象的数据属性和行为。...
本章重点讲解了类与对象的概念及其在Java中的应用。 首先,面向对象的基本思想是基于现实世界的抽象,通过对象、类、继承、封装、多态等概念来构建程序。这种编程方式更符合人类的思维模式,使得代码更易于理解和...