面向对象的编程之对象间的交互

**面向对象的编程

————对象间的交互

  • 对于一个简单的测试用的java程序,其基本主体可以在main()中进行,然而要运行真正的Java程序,就需要进行对象之间的交互,简单的对象间的交互,需要用不同的实例变量来表示对象,并且相互调用彼此之间的方法。

  • 下面以一个简单的例子来说明:
    这里有一个小游戏:游戏规定一个0~9以内的整数,由三个玩家每人猜测这个数字。答对者则是赢家,否则就在比一轮。

  • 那么根据游戏规则,我们可以构造出两个对象,玩家和这个游戏。那么我们就需要3个类,一个类表示玩家(player),一个类代表这个游戏(GuessGame),一个类用来开始游戏(GameStart)(包含main方法,程序的入口)。

  • 我们在player类里设立guess方法,让玩家随机猜测一个0~9之间的数字,再在GuessGame类中调用这个方法。那么我们就需要在GuessGame类中用3个实例变量player 1 player 2 player 3来表示这3个对象(玩家)。游戏主体的规则方法在GuessGame类中,而我们会在GameStart类中建立关于GuessGame的对象并调用这些方法。

  • 以下是大概的代码

```public class player {  //定义一个player类,包含一个猜测数字的方法
	int number = 0;
public void guess (){
	number = (int)(Math.random()*10);
	System.out.println("I'm guessing "+number);
	}
}
==========================================
public class GuessGame{
	player p1;//用3个实例变量表示3个类player的对象
	player p2;
	player p3;

public void startGame(){
	p1 = new player();//这里创建了三个player类的对象
	p2 = new player();
	p3 = new player();
	
	int guessp1 = 0;
	int guessp2 = 0;
	int guessp3 = 0;
	boolean p1isright = false;
	boolean p2isright = false;
	boolean p3isright = false;
	int targetNumber = (int)(Math.random()*10);
	System.out.println("I'thinking of a number between 0 and 9 ...");
	while(true){
		System.out.println("Number to guess is "+targetNumber);
		p1.guess(); //这里分别调用了类player的guess方法,得到的结果分别保存在三个对象的实例变量里,也就是之前player类中定义的number变量
		p2.guess();
		p3.guess();
		guessp1 = p1.number;//这里开始取出3个对象的所猜测的数字并将其列出
		System.out.println("player one guessed"+ guessp1);
		guessp2 = p2.number;
		System.out.println("player two guessed"+ guessp2);
		guessp2 = p3.nuimber;
		System.out.println("player three guessed"+ guessp3);
		if (guessp1 == targetNumber){
			p1isright = true;
		}
		if (guessp2 == targetNumber){
			p2isright = true;
		}
		if (guessp3 == targetNumber){
			p3isright = true;
		}
		if(p1isright||p2isright||p3isright){ // 如果有人猜对了就出现赢家,否则就再比一局
			System.out.println("We have a winner!");
			System.out.println("Player one got it right ?"+ p1isright);
			System.out.println("Player two got it right ?"+ p2isright);
			System.out.println("Player three got it right ?"+ p3isright);
			System.out.println("Game is over ");
			break;
		}else{
			System.out.println("Player will have to try again.");
			}	
		}

	}
	
}
public class GameStart{//这里是主类,包含main方法,游戏从这里开始
	public static void main (String [] args){
		GuessGame game = new GuessGame();
		game.startGame();
	}
}


  • 以上就涉及到了简单的对象之间的交互

  • 2.Java中创建对象时,不管对象是如何创建的,它都会被保存在一个叫“堆”的内存区域中。而在java中的这个堆,是一个“垃圾回收堆”,Java会根据对象的大小来分配内存空间,如果java虚拟机察觉到对象不会再被使用时,就会启动“垃圾收集器”来回收空间,让空间能够被再次利用。

·要点

  1. 面向对象设计扩展功能不需要改动之前已经测试好的代码。
  2. 所有的java程序都定义在类之中
  3. 类如同蓝图描述该类型的对象要如何创建
  4. 对象自治,没有必要在意一个对象是如何完成它的工作的
  5. 对象包含有已知的事务,并能执行工作
  6. 创建类时,可能会需要创建独立,测试用的类
  7. 类可以继承自较为抽象的父类
  8. Java的程序在执行期内是一组会互相交谈的对象。
  9. Java程序是由一个组类所组成的,其中一个类带有启动整个程序的入口main方法
    10.当需要创建的类的数量非常大,甚至达到成白上千个的时候,就需要包装起来(尚未知,待研究)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值