`
菜刀兔兔兔
  • 浏览: 16600 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

类和对象总结

阅读更多
6月25日26日总结(类和对象):
这两天讲了类和对象,知识点挺多,包括对象的概念、类的组成和基本格式、实例化对象和调用方法的格式、构造方法、方法重载、this关键字、值传递和引用传递。
1、对象的概念:对象必须是具体的某一个物体或者具体的某一个事物。
比如说,桌子上放着的这台黑色电脑。但是如果就说 电脑 不能作为一个对象,因为他不是具体的事物。
对象有特征,即事物的属性,比如上面说的桌子上放着的这台黑色电脑中黑色就是该电脑的特征。当然,特征不止包括颜色,只要是物体的属性都能作为特征。对象也有功能、用途、或者行为,比如说电脑可以用来玩游戏,那被用来玩游戏就是电脑的一个用途,在类中我们称之为方法。
2、类的组成和基本格式
程序中的类由两部分组成:1、属性 2、方法
他的基本格式为:
public class 类名 {
private 数据类型 属性名;

public 返回值数据类型 方法名(数据类型 参数名,...){
//方法体
}
}
比如说:小王如果加一次班,则薪水加50,如果不加班,则薪水不加。

在这个场景中,对象是小王,特征是他的姓名和薪水,行为是加班。
在上述场景中,可写出一下的类:
//创建一个Worker类
public class Worker{ //public class 类名

//定义一个String类型,参数名为name
private String name; //private 数据类型 属性名;

//定义一个int类型,参数名为wage
ptivate int wage; //private 数据类型 属性名;

//设置属性值name的方法
public void setName(String n){
name = n;
}
//返回属性值name的方法
public String getName(){
return name;
}
//设置属性值wage的方法
public void setWage(int w){
wage = w;
}
//返回属性值wage的方法
public int getWage(){
return wage;
}

//定义一个加班方法
public void jiaban(){
wage = wage + 50;
System.out.println(name+"加班了一次班,他的薪水加了50,此时的薪水为"+wage);
}
}

3、实例化对象和调用方法的格式
实例化对象的关键字是:new
调用方法的格式:
类名 对象名 = new 类名();

调用方法和属性的格式:
对象名.方法名(参数值,...);
对象名.属性;
例如:
//创建一个类
public class Manager{

//函数入口
public static void main(Strings[] args){

//定义一个worker类型,参数名为wo
Worker wo = new Worker();

//设置名字
wo.setName("小王");

//设置薪水
wo.setWate("3000");

//小王加了一次班,调用一次jiaban()方法
wo.jiaban();
}
}
4、构造方法
构造方法和普通方法是java里面的两类方法,普通方法表示的是对象的行为,比如说上述的jiaban()是用来表示对象的加班行为,而构造方法是用来实例化对象的,比如说上面的类中的Worker wo = new Worker();就是用来实例化一个worker对象。构造方法和普通方法的区别有三点1.名字不同;2.返回值类型不同;3.用途不同。构造方法的用途有1、实例化对象;2、给属性设置初始值。
其中需要注意的是:当类中未定义构造方法时,那么Java会给类提供一个默认的构造方法;我们在实例化对象的时候,使用的就是默认的提供的构造方法。当你定义构造方法后,默认的构造方法会被你定义的构造方法覆盖,无法再继续使用,只能使用你定义的方法。

5、方法重载
实现方法重载的条件的有两个:1、方法名字要相同;2、方法所带的参数个数,参数类型,参数顺序至少要有一个不同。
为什么构造方法要使用方法重载?举个例子,java.awt中有Checkbox类,它有5种构造方法,用于不同的情况1、Checkbox() 使用空字符串标签创建一个复选框。2、Checkbox(String label) 使用指定标签创建一个复选框。3、Checkbox(String label, boolean state) 使用指定标签创建一个复选框,并将它设置为指定状态……

6、this关键字
this关键字只能调用当前类中的属性和方法。他的用途是1.用来区分属性名和参数名(前提是属性名和参数名相同)2.调用构造方法。
this关键字表示当前调用方法的对象。
例如上述Worker类中setName()方法可以改成

public void setName(String name){
this.name = name;
}
7、值传递和引用传递
值传递适用于java的8个基本数据类型和String类型,它是将值传给一个参数。而不是将地址传递给一个参数。引用传递适用于引用类型,它是将地址传递。

这次的练习是使用构造方法、重载、this、值传递和引用传递编写一个回合制游戏:

//**战士和**Boss或者小怪进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了。
//定义一个boss类
public class boss{

//设置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(soldier so,monster mo){
so.setBlood(so.getBlood()-1);
System.out.println(so.getName()+"减了一滴血。");
System.out.println("此时,"+name+"的血量为"+blood+","+so.getName()+"的血量为"+so.getBlood()+","+mo.getName()+"的血量为"+2*mo.getBlood());
}
//与小怪战斗的行为
public void fight(monster mo,soldier so){
mo.setBlood(mo.getBlood()-1);
System.out.println(mo.getName()+"减了两滴血。");
System.out.println("此时,"+name+"的血量为"+blood+","+so.getName()+"的血量为"+so.getBlood()+","+mo.getName()+"的血量为"+2*mo.getBlood());
}
}

//**战士和**Boss或者小怪进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了。
//定义一个soldier类
public class soldier{

//设置soldier名字
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;
}

//与boss战斗的行为

public void fight(boss bo,monster mo){
bo.setBlood(bo.getBlood()-1);
System.out.println(bo.getName()+"减了一滴血。");
System.out.println("此时,"+name+"的血量为"+blood+","+bo.getName()+"的血量为"+bo.getBlood()+","+mo.getName()+"的血量为"+2*mo.getBlood());
}
//与小怪战斗的行为
public void fight(monster mo,boss bo){

mo.setBlood(mo.getBlood()-1);
System.out.println(mo.getName()+"减了两滴血。");
System.out.println("此时,"+name+"的血量为"+blood+","+bo.getName()+"的血量为"+bo.getBlood()+","+mo.getName()+"的血量为"+2*mo.getBlood());
}
}

//**战士和**Boss或者小怪进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了。
//定义一个monster类
public class monster{

//设置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;
}

//与boss战斗的行为

public void fight(boss bo,soldier so){
bo.setBlood(bo.getBlood()-2);
System.out.println(bo.getName()+"减了两滴血。");
System.out.println("此时,"+name+"的血量为"+2*blood+","+bo.getName()+"的血量为"+bo.getBlood()+","+so.getName()+"的血量为"+so.getBlood());
}
//与战士战斗的行为
public void fight(soldier so,boss bo){
so.setBlood(so.getBlood()-2);
System.out.println(so.getName()+"减了两滴血。");
System.out.println("此时,"+name+"的血量为"+2*blood+","+bo.getName()+"的血量为"+bo.getBlood()+","+so.getName()+"的血量为"+so.getBlood());
}

}


//**战士和**Boss或者小怪进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了。
//定义一个game类
public class Game3{

//定义一个入口函数
public static void main(String [] args){
//设置战士的属性

int blood = 5;

soldier s = new soldier();

s.setName("Aboss");

s.setBlood(blood);

//设置boss的属性
boss b = new boss();

b.setName("B战士");

b.setBlood(blood);


//设置小怪的属性
monster m = new monster();

m.setName("小怪");

m.setBlood(3);

//设置第二只小怪的属性

monster m2 = new monster();

//将第一只小怪的属性赋给第二只
m2 = m; ;

//设置战斗
while(s.getBlood()!=0&&b.getBlood()!=0&&m.getBlood()!=0){

System.out.print(s.getName()+"打了"+b.getName()+"一下,");
s.fight(b,m);
if(b.getBlood()==0) break;
System.out.print(b.getName()+"打了"+m.getName()+"一下,");
b.fight(m,s);
if(2*m.getBlood()==0) break;
System.out.print(m.getName()+"打了"+s.getName()+"一下,");
m.fight(s,b);
if(s.getBlood()==0) break;
System.out.print(s.getName()+"打了"+m.getName()+"一下,");
s.fight(m,b);
if(2*m.getBlood()==0) break;
System.out.print(m.getName()+"打了"+b.getName()+"一下,");
m.fight(b,s);
if(b.getBlood()==0) break;
System.out.print(b.getName()+"打了"+s.getName()+"一下,");
b.fight(s,m);
if(s.getBlood()==0) break;

}

if(s.getBlood()==0) System.out.println(b.getName()+"和"+m.getName()+"胜利!");
if(b.getBlood()==0) System.out.println(s.getName()+"和"+m.getName()+"胜利!");
if(m.getBlood()==0) System.out.println(b.getName()+"和"+s.getName()+"胜利!");


}
}
分享到:
评论

相关推荐

    Java中的类和对象总结

    ### Java中的类和对象总结 #### 一、类与对象的概念 在面向对象编程中,类(Class)和对象(Object)是两个核心概念。类是对象的抽象模板,它定义了对象的数据结构(即属性)和行为(即方法)。而对象则是类的具体...

    类和对象、构造方法总结

    在编程领域,面向对象编程(Object-Oriented Programming, OOP)是一种常见的编程范式,其中类和对象是核心概念。本篇文章将深入探讨类与对象以及构造方法的相关知识点。 首先,类是对象的蓝图,它定义了一组特性和...

    C++ 类与对象习题

    - **类定义**: C++中用来描述一类对象的共同特征和行为的概念。它是一个抽象数据类型,包含了数据成员和成员函数。 - **成员函数**: 定义在类中的函数,用于实现类的行为。 - **数据成员**: 定义在类中的变量,用于...

    类对象和类指针

    总结,类对象和类指针在不同场景下各有优势。类对象更适合于轻量级对象和效率要求高的场合,而类指针则适用于需要动态绑定和管理大量对象的情况。理解并熟练运用这两种方式,能够帮助我们更好地设计和实现面向对象的...

    C++ 类和对象

    总结一下,C++的类和对象是实现面向对象编程的基础。类定义了对象的结构和行为,而对象是类的实例,拥有类定义的属性和方法。理解并熟练掌握类和对象的使用,对于任何C++程序员来说都是至关重要的。通过阅读《C++类...

    类与对象-java实验报告

    本次实验的目的是深入理解和掌握Java编程语言中的类与对象的概念,通过设计和实现一系列几何图形类,包括点、直线、三角形、矩形、正方形、圆形和椭圆,来实践面向对象的设计方法。实验要求学生不仅能够创建数据域和...

    类和对象的基本概念和用法

    类和对象的基本概念和用法 类和对象是面向对象编程(Object-Oriented Programming,OOP)的基础概念。...总结:在类作用域里面,不管什么属性的成员都能访问,在类外面,只能访问公有成员,不能访问私有和保护成员。

    面向对象编程:类和对象

    本文将深入探讨C#2005中面向对象编程的基石——类和对象,通过解析给定文件的信息,提炼并扩展相关知识点。 ### 类的概念 类在面向对象编程中扮演着中心角色,它不仅封装了数据,还封装了对这些数据进行操作的方法...

    使用类的对象还是指针

    在这篇文章中,我们将总结了使用类的对象还是指针的主要区别和使用场景,希望能够帮助有疑问的朋友更好地理解和应用。 首先,我们需要了解类的对象和指针的存储空间上的区别。使用new关键字创建的对象存储在堆上,...

    类与对象的关系

    在C#中,创建类意味着定义了一组属性和方法,这些属性和方法描述了该类的对象将会拥有什么数据和可以执行什么行为。在面向对象的程序设计中,类是对现实世界中具有相似性质的对象的抽象和封装。 在上机实验中,学生...

    类与对象实验

    第二个例子展示了类的组合,即一个类`Father`中包含了两个`Son`对象`s1`和`s2`。`Father`类的构造函数接受三个整型参数,分别用于初始化`Father`的`age`以及`Son`对象`s1`和`s2`的`age`。在`main()`中,创建了一个`...

    对于类和对象的个人理解

    总结来说,类和对象是面向对象编程的核心,它们定义了软件组件的结构和行为。通过合理地设计和实现类与对象,我们可以构建出复杂、模块化的软件系统。在开发过程中,借助源码管理和开发工具,我们可以更高效地实现和...

    java类与对象实验报告.docx

    在Java编程语言中,类是面向对象编程的基础,它用于封装数据和操作这些数据的方法。在给定的实验中,有两个主要的类被创建:`complex1` 和 `Complex`,它们都用来表示复数,并提供了复数的加法和减法运算。 1. **...

    Java面向对象总结

    ### Java面向对象总结 #### 一、继承 继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现了代码的复用。 1. **子类继承父类就拥有了父类的属性和方法**:当一...

Global site tag (gtag.js) - Google Analytics