难以理解对象状态,行为和身份?

时间:2013-08-13 21:14:36

标签: java object state identity behavior

我的教授指示我在一个页面上自我介绍,好像我是一个对象,我必须解决三件事:
1)对象状态,2)行为,3)身份。

然而,我仍然对如何做这样的事情感到困惑。 (我已经读过我必须解决的三个属性,但我不知道如何将它应用于某人) 例如,有人告诉我,狗会有各种状态,如名称,颜色和品种;以及行为,例如走路,吠叫或摇尾巴。

我会做类似的事情:

Student me = new Student();
System.out.println(me.getName()); //a state?
System.out.println(me.getCurrentActivity()); //A behavior? (if it were to return watching TV or something) 
System.out.println(me.get....()); //???

或者我在这里得到了完全错误的想法?

5 个答案:

答案 0 :(得分:39)

对象的特征是:

  

<强>国家:   对象有什么,学生有名字,姓氏,年龄等

     

<强>行为:   对象做什么,学生参加“Java for beginners”课程

     

<强>身份:   是什么使他们成为唯一,学生有学生ID号码,或者是唯一的电子邮件。 (这在实现equals方法时很重要,以确定对象是否不同)

Student john = new Student("John");
john.setCurrentActivity("Learning Java");
john.setAge(21);
john.setWeight(173);
john.setAddress(...);
john.setHobbies(...);

你可以找出吸气剂。

public class Student {
    private String name;
    private int    age;
    //etc

    // construct a new student 
    public Student(String name) {
        this.name   = name;
    }

    public setAge(int age) {
        this.age   = age;
    }

    public int getAge() {
        return age;
    }
}

Car对象的插图,我发现这可能对你有帮助......

汽车状态

  • 速度
  • RPM
  • 齿轮
  • 方向
  • 燃油油位
  • 发动机温度

<强>行为

  • 改变装备
  • 更快/更慢
  • 反过来
  • 停止
  • 关断

<强>身份

  • VIN
  • 车牌

答案 1 :(得分:3)

所有对象都有三个基本特征:

  • 行为
  • 身份

对象的状态由对象的属性以及它们具有的值定义。 在您的情况下,name, age, gender

术语"behavior"指的是objects interact with each other的方式,它由对象可以执行的操作定义。在你的情况下,学生对象,可以做一些活动吗?

student.getResults();
  • 身份:

Even objects with the same properties and behavior have their own individual identity.

例如,

  

同年建造的2辆蓝色旅行车   制造商仍然是独立和独特的汽车。

     

对象的标识与其属性或操作无关。   因此,无论其属性具有什么值,对象都将保留其身份。

答案 2 :(得分:1)

作为对@MrSimpleMind答案标记为最佳答案的更正,并详细说明了@JNL的答案:

身份并不是使对象在其状态方面唯一的原因(例如,名称=“ Tim”或其他)。但是身份是,对象在内存中的位置是唯一的。
如果您想了解更多有关此内容的知识,可以先查看此Wiki page: Identity in OOP

更新
值得一提的是,它并不总是在内存中定位。将对象保存到数据库时,它实际上将保存为一行,这里使用ID列。

答案 3 :(得分:0)

状态:-状态是对象变量的值

行为:-是对象的方法

身份:-它是对象的名称。

例如:-

级车{

int速度= 100;

void accelerator(){}

}

class_car obj_car;

在这里

状态:-速度

行为:-加速

身份:-obj_car

答案 4 :(得分:0)

在对象的编程实现中,

其状态由其实例变量定义。实例变量是对象专用的。除非明确将其公开或提供给其他“友好”类使用,否则无法从对象外部访问对象的实例变量。

对象的行为由其方法定义。方法操纵实例变量以创建新状态;对象的方法也可以创建新对象。 Java white paper page:34