【发布时间】:2018-01-16 09:00:17
【问题描述】:
为什么从未定义实例化对象的封装?
Duck duck = new Duck();
这不会将所有对象设置为每个定义的默认值,从而可以在任何地方访问吗?
此外,List 在实例化时通常不设置私有是否有原因?
List<Ducks> ducks = new ArrayList<>();
我理解你的批评,我明白什么是封装。 明天我必须在 3 位老师面前展示一个巨大的网站,并想知道为什么我们将所有其他属性设置为私有,而实例化列表/对象封装从未定义。感谢您的任何认真回答
Point originOne = new Point(23, 94);
Rectangle rectOne = new Rectangle(originOne, 100, 200);
Rectangle rectTwo = new Rectangle(50, 100);
例如 java 教程中的这三个对象。从未说明它们的封装(私有/公共/受保护)
【问题讨论】:
-
...谁说他们不是?
-
你知道Java中的“私有”是什么意思吗?看起来不像,所以你能解释一下你认为它是什么意思吗?
-
在该示例中声明实例字段的任何地方,它都有一个访问修饰符。在没有上下文的孤立行中,没有访问修饰符,因为它们没有声明字段:它们只是一般地展示如何实例化对象。
-
当您不说明变量的声明位置时,问题中的所有这些“示例”都是毫无意义的。 “我在谈论实例化对象”那你真的不知道
private是什么意思。对象没有也不需要访问修饰符。 -
对象不需要访问修饰符,但变量可以具有访问修饰符,具体取决于它的声明位置。因此,如果您对此类变量有疑问,则需要告诉我们这些变量的声明位置。
标签: java private instantiation encapsulation