`
guanxianxiao
  • 浏览: 18705 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java中类和对象的个人理解

阅读更多
目标:
1.掌握类和对象的格式和用途
2.把握好如何将生活中类和对象转换为程序。

面向对象编程:模拟现实生活。
所有的概念,都是源自于生活中。

1.找出生活中的对象?
对象:只要是生活中具体的某一个物体或者具体的某一个事物就是一个对象。
举例:
某一个学生
特征:姓名,性别,学分,年龄,学校,....
行为:考试,说话,睡觉,吃饭,学习,打游戏,看电视,...
某一个篮球
特征:形状,材料,颜色,重量,半径
用途、功能、行为:弹,
某一支笔


你眼睛里看到的任何一个物体就是一个对象。

1.找对象     :具体的的某个事物  独一无二的
2.找对象的特性和行为

2.类的组成
生活中的分类,是根据对象相似的特征和相似的行为进行归类的。

程序中类,是按照固定的格式,对对象的特征和行为进行的定义,定义成一个相应的模板。

程序中类由2个部分组成:1.属性(对象的特征)  2.方法(对象的行为)

3.类的基本格式
public  class 类名 {

//定义属性的格式
private 数据类型  属性名;

//方法的格式
public 返回值数据类型 方法名(数据类型 形参名,...){

}

}


注:一个.java文件中只有一个类


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

调用方法的格式
对象名.方法名(实参或者参数值,...);
stu.setName("张三");
int s = stu.getScore();
s-=1;
stu.setScore(s);

stu.study();
stu.play();

5.对象是否可以作为参数?
1.定义的类是否可以作为数据类型?
可以的  

2.你用类实例化对象的是可以作为参数的。


注: 参考String类

6.练习
1.回合制游戏:**角色和男爵Boss进行战斗,直到一方的血量为0时结束战斗,输出谁胜利了!

2.总结:类和对象总结
1.概念描述清楚
本身你自己的理解+生活中的实例+代码







个人理解:
类:一群具有相同属性、方法的物体的集合。
对象:某个类下的具体物体,有特定的属性、方法。

生活中的例子: 1.比如说 电脑 就是一个类    
      ( 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,
       又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
        都有显示器,键盘,鼠标,显卡,内存.....)
   2.但电脑之间也有不同,如电脑品牌不同(苹果,联想,华硕,戴尔....),不同品牌的不同型号的机器硬件有所不同,
            不同操作系统、 不同内存、不同键盘、不同鼠标,但大体功能一样 (即:能够按照程序运行,自动、高速处理海量数据)
             所以说某品牌某型号电脑即为一个对象,它是对象的一个具体事例,具体化电脑的一些属性。
   如: 联想G480  即为一个对象
   3. 64位操作系统  4G内存  为相应的对象的属性值
   电脑可以允许各种软件    为相应的对象的行为或方法
  
  
类的声明:public class 类名(Computer){ //声明一个类
//定义属性的格式
private  数据类型    变量名;

private String name  = new String();

private int number ;

//定义方法
public  返回值类型   方法名(){}

public void setname(String n){
name=n;
}

public void setnumber(int num){
number=num;
}

}

实例化相应类的对象及其方法的调用:
类名      对象名 = new  类名();//实例化一个对象 
如:Computer computer = new Computer();

对象名.方法名(参数名或数值);//方法的调用 
如:computer.setname("lenovo");
   computer.setnumber(480);

             
 
/**
 * 
 * @author Guanxianxiao
 *
 */
public class Zed {
	private String name = new String();
	private int blood ;
	private int ATK;
	public void setname(String n){
		name=n;		
	}
	public void setblood(int b){
		blood=b;		
	}
	public void setATK(int a){
		ATK=a;		
	}
	public String getname(){
		return name;
	}
	public int getblood(){
		return blood;
	}
	public int getATK(){		
		return ATK;
	}
	public void attack(Baron b){
		int blood_temp=b.getblood()-this.getATK();
		b.setblood(blood_temp);	
		System.out.println("纳什男爵的血量:"+b.getblood());
	}

}


***********************************************************
/**
 * 
 * @author Guanxianxiao
 *
 */
public class Baron {
	private String name = new String();
	private int blood ;
	private int ATK;
	public void setname(String n){
		name=n;		
	}
	public void setblood(int b){
		blood=b;		
	}
	public void setATK(int a){
		ATK=a;		
	}
	public String getname(){
		return name;
	}
	public int getblood(){
		return blood;
	}
	public int getATK(){		
		return ATK;
	}
	public void attack (Zed z){
		int blood_temp=z.getblood()-this.getATK();
		z.setblood(blood_temp);	
		System.out.println("影流之主的血量:"+z.getblood());
	}	
}



***********************************************************

public class Fighting {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Baron baron = new Baron();
		Zed  zed = new Zed();
		baron.setname("大龙-纳什男爵");
		baron.setblood(1000);
		baron.setATK(25);
		
		System.out.println("选手1:"+baron.getname()+"->"+"血量:"+baron.getblood()+"->"+"攻击力:"+baron.getATK());
		
		zed.setname("影流之主-劫");
		zed.setblood(700);
		zed.setATK(38);
		
		System.out.println("选手1:"+zed.getname()+"->"+"血量:"+zed.getblood()+"->"+"攻击力:"+zed.getATK());
		
		System.out.println("*********************************开始战斗(回合制)*********************************");
		
		int who_first;
		who_first = (int) (Math.random()*2);
		System.out.println(who_first);
		
		if(who_first==0){
			while(baron.getblood()>0&&zed.getblood()>0){
				 baron.attack(zed);
				if(zed.getblood()<=0){
					System.out.println(baron.getname()+"击杀了"+zed.getname());
					break;
				}
				else{
					zed.attack(baron);
					if(baron.getblood()<=0){
						System.out.println(zed.getname()+"击杀了"+baron.getname());
						break;
					}
				}
			}
			
		}
		else if(who_first==1){
			while(baron.getblood()>0&&zed.getblood()>0){
				zed.attack(baron);
				if(baron.getblood()<=0){
					System.out.println(zed.getname()+"击杀了"+baron.getname());
					break;
				}
				else{
					baron.attack(zed);
					if(zed.getblood()<=0){
						System.out.println(baron.getname()+"击杀了"+zed.getname());
						break;
					}
				}
			}	
		}		
	}		
}



     
分享到:
评论

相关推荐

    Java面向对象总结PPT

    JavaOOP整理复习 总结了自己学习Java面向对象编程思想的一些个人理解,希望对初学OOP思想的网友有帮助。 colin3dmax

    java源码包---java 源码 大量 实例

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    个人java总结之面向对象

    这是我个人总结出来的,让你很容易理解面向对象思想

    Java课程设计--个人通讯录管理系统方案.doc

    使学生巩固和加深以Java语言为根底的面向对象编程技术理论知识的理解,提高实际 动手编程能力的培养,掌握以Java为核心的应用软件开发方案,到达能独立阅读、编制 和调试一定规模的Java程序的水平。 3 1.3本选题的...

    java源码包2

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    Java面向对象详细资料加个人的一下理解注释

    适合刚入门的Java新手

    java源码包4

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    JAVA上百实例源码以及开源项目

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    JAVA上百实例源码以及开源项目源代码

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包3

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    Java面向对象的三大特性和面向对象的进阶

    主要简述Java面向对象基础,进阶,高级;从封装、继承、多态、接口、内部类、抽象类和代码块 适合刚开始的新手参考,毕竟我也是自学的 主要可以使用在计算机刚入门的小伙伴或者回来看一看复习一下简单的基础的 ① 凡...

    java开源包11

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包6

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包9

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    Java 学习笔记极其详细版(包括一些个人色彩不仅仅是纯笔记)

    个人项目实践:结合作者经验,分享项目开发中的心得和技巧。 适用人群 Java初学者:希望从零开始学习Java编程的新手。 在校大学生:计算机科学或相关专业,需要深入理解Java语言。 自学编程爱好者:通过自学提升Java...

    java开源包4

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包101

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包5

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包8

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包10

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

Global site tag (gtag.js) - Google Analytics