下面的代码中,Order 类将数据成员 orderId 和 orderName 设为私有属性,
同时在类中重写 equals 方法用于比较两个 Order 类的属性是否相等 ,
在该方法中接收一个类型为 Object 的形参 obj 并之后将其向下转型为 Order 类时,
为什么可以直接调用两个私有属性而不是使用私有属性的 get & set 方法?
(Order 类将属性封装起来,那么 Order 类实例化的对象不是只能通过 get & set 才能修改 /使用对象中的私有属性么)
1
lhx2008 2019-01-20 10:30:09 +08:00 1
private 是 “类私有”,而不是对象私有,所以同类对象之间是可以互相访问私有变量的,但是正确的做法显然是尊重封装,使用公有方法。
|
2
hellojinjie 2019-01-20 10:30:26 +08:00 1
private public protected 访问修饰符是针对类( class )来说的,不是对象( object )。
|
3
Malthael 2019-01-20 10:30:31 +08:00 via iPhone 1
因为这个方法写在了 Order 类下,里面的私有变量和方法都可以直接用。
|
4
jerrry 2019-01-20 10:32:29 +08:00 via Android 1
The private modifier specifies that the member can only be accessed in its own class.
|
5
fxxkingduck OP @jerrry @Malthael @hellojinjie @lhx2008 明白了,权限修饰符只是规定了 class 与 class 之间的访问限制,同一个 class 中的不同 object 可以访问该 class 的私有属性的
|
6
fxxkingduck OP |
7
rockyou12 2019-01-20 11:01:24 +08:00
不过这个写法真的不好,除非 Order 类是 final 的不能继承,不然还是用 getter&settter 访问安全些
|