7.2类与对象
逻辑对应关系
类的成员变量 → 对象状态
类的成员函数 → 对象行为
类的静态变量
类的静态函数
物理对应关系
物理上对象中保存了如下:
对象的状态
注意:逻辑上,一个对象将持有对象的状态和行为(分别由类的成员变量和成员函数派生而来),但实例物理上,对象中只保存了对象的状态并未保存对象的行为,即并未copy一份成员函数的代码到对象中,对象只是调用了类的成员函数。为了区分哪个对象掉用了类的成员函数,java引入了携带对象身份信息的this关键字(类比Python中的self关键字),通过this来区分哪个对象调用了类的成员函数。
物理上类中保存如下:
类的成员变量
类的成员函数
类的静态变量
类的静态函数
代码说明
对于如下的Employee类,类中包含了成员变量、成员函数、静态变量、静态函数
通过Employee类new 了2个对象EmployeeA和EmployeeB。对象中只保存了对象的状态,即name和salary,并未保存对象的行为,物理结构如下:
EmployeeA
name:John
salary:10000
EmployeeB
name:Marry
salary:20000
Employee类的代码
静态变量
静态函数
doWork()
getPaid()
类的静态变量,静态函数
没有this引用,静态变量全局唯一一份
普通函数可以引用静态变量、函数么?ok
对象上可以引用静态变量、函数么?编译器警告
静态函数可以引用普通成员变量、函数么?编译错误
Last updated
Was this helpful?