类与对象----拜访对象村

类与对象----拜访对象村

1.以对象来思考

当你在设计类时,要记得对象是靠类的模型塑造出来的。你可以这样看:
1)对象是已知的事物
2)对象会执行的动作
对象本身已知的事物被称为:实例变量。它们代表对象的状态(数据),且该类型的每一个对象都会独立的拥有一份该类型的值。
对象可以执行的动作被称为:方法。在设计类时,你也会设计出操作对象数据的方法。对象带有读取或操作实例变量的方法。
eg:闹钟对象会有个变量来保存响铃时间,且会有getTime()和setTime()这两个方法来存取该时间。
到底类与对象两者之间有什么不同?
1)类不是对象(却是用来创建它们的模型)
类是对象的蓝图。它会告诉虚拟机如何创建某种类型的对象。根据某类创建出的对象都会有自己的实例变量。
eg:你可以使用按钮类来创建出许多大小、颜色、文字等不同的按钮。
2)对象就好像通讯簿中的一笔数据
eg:通讯簿的每张卡片都有相同的空白字段(实例变量)。填入的新联系人就如同创建新的实例(对象),填入卡片的数据代表联络
人的状态。

2.创建对象

1)如何运用对象?
你需要两个类,一个是要被操作于对象的类,两一个是用来测试该类的类。测试用的类带有main并且你会在其中建立与存取被测的对象。
圆点运算符(.):此运算符能让你存取对象的状态与行为
Dog.java—操作类

public class Dog {
		//实例变量
		int size;
		String bread;
		String name;
		//方法
		void bark(){
			System.out.println("Ruff! Ruff!");
		}
	}

DogTestDrive.java—测试类

public class DogTestDrive {
		public static void main(String[] args) {
			//建立Dog对象
			Dog d = new Dog();
			//获取该对象的变量
			d.size = 40;
			//调用它的方法
			d.bark();
		}
	}

3.main()的两种用途

1)测试真正的类
2)启动你的Java应用程序
eg:猜数字游戏
程序逻辑:
(1)GameLanucher这个类带有main()方法,是应用程序的入口点;
(2)main()中会创建出GuessGame对象,并调用它的startGame()方法;
(3)startGame()方法是游戏的起点。它会创建3个player,然后挑出要猜测的随机数字。它会要求player猜测并检查结果,过程会被列出来。
GuessGame.java

 public class GuessGame {
    //表示3个Player对象
    Player p1;
    Player p2;
    Player p3;

    public void startGame(){
        //创建出Player对象
        p1 = new Player();
        p2 = new Player();
        p3 = new Player();
        //声明3个变量来保存是否猜中
        boolean p1isRight = false;
        boolean p2isRight = false;
        boolean p3isRight = false;
        //声明3个变量来保存猜测的数字
        int guessp1 = 0;
        int guessp2 = 0;
        int guessp3 = 0;
        //产生谜底数字
        int targetNumber = (int)(Math.random()*10);
        System.out.println("I am thinking of a number between 0 and 9 ...");

        while(true){
            System.out.println("Number to guess is "+targetNumber);
            p1.guess();
            p2.guess();
            p3.guess();
            //取出每个Player所猜测的数字并将它列出
            guessp1 = p1.number;
            System.out.println("Player one guessed "+guessp1);
            guessp1 = p2.number;
            System.out.println("Player one guessed "+guessp2);
            guessp1 = p3.number;
            System.out.println("Player one 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 is right?"+p1isRight);
                System.out.println("Player two got is right?"+p2isRight);
                System.out.println("Player three got is right?"+p3isRight);
                System.out.println("Game is over!");
                //游戏结束,中止循环
                break;
            }else{
                //都没有猜到,所以要继续下去
                System.out.println("Players will have to try again.");
            }
        }

    }
}

Player.java

public class Player {
    //要被猜的数字
    int number = 0;
    public void guess() {
        number = (int)(Math.random()*10);
        System.out.println("I'm guessing "+number);
    }
}

GameLauncher.java

public class GameLauncher {
    public static void main(String[] args) {
        GuessGame game = new GuessGame();
        game.startGame();
    }
}

4.要点

1)面向对象设计扩展功能不需要改动之前已经测试好的程序代码
2)所有的Java程序都定义在类中
3)类如同蓝图描述该类型的对象要如何创建
4)对象自治,你无需在意它如何完成任务
5)对象有已知的事物,并能执行工作
6)对象本身已知道的事物被称为实例变量,它代表对象的状态
7)对象可执行的动作称为方法,它代表对象的行为
8)创建类时,可能同时会需要创建独立、测试用的类。
9)类可以继承自较为抽象的类
10)Java的程序在执行期是一组会互相交谈的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值