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

The*_*Guy 22 java state identity behavior object

我的教授指示我在一个页面上自我介绍,好像我是一个对象,我必须解决三件事:
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....()); //???
Run Code Online (Sandbox Code Playgroud)

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

MrS*_*ind 44

对象的特征是:

状态: 对象有什么,学生有名字,姓氏,年龄等

行为: 对象的作用,学生参加"初学者的Java"课程

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

Student john = new Student("John");
john.setCurrentActivity("Learning Java");
john.setAge(21);
john.setWeight(173);
john.setAddress(...);
john.setHobbies(...);
Run Code Online (Sandbox Code Playgroud)

你可以找出吸气剂.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

一个汽车对象的插图,我发现这可能会帮助你一些...

汽车状态:

  • 速度
  • RPM
  • 齿轮
  • 方向
  • 燃料水平
  • 发动机温度

行为:

  • 改变齿轮
  • 走得更快/更慢
  • 反过来
  • 停止
  • 关闭

身份:

  • VIN
  • 牌照


JNL*_*JNL 5

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

  • 状态
  • 行为
  • 身份

对象的状态由对象的属性及其所具有的值定义。就你而言,name, age, gender

该术语"behavior"指的是“如何objects interact with each other”,它是由对象可以执行的操作来定义的。就你而言,学生反对,可以做一些活动吗?

student.getResults();
Run Code Online (Sandbox Code Playgroud)
  • 身份:

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

例如,

同一制造商于同一年生产的 2 辆蓝色旅行车仍然是独立且独特的汽车。

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


Mil*_*ard 5

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

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

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