请告诉我java语言中强封装和弱封装的区别。封装是将数据和它的相关函数绑定在一个叫做类的单元中。那么,这个术语是什么意思,例如弱封装和强封装?
sc4hvdpw1#
封装是一个OOP概念,它可以防止数据和函数受到外部干扰或误用。封装可以对客户端隐藏实现,并允许在不影响客户端的情况下更改代码。形容词"弱"或"强"指的是在代码中实施此概念的效果如何。例如,假设您有一个名为Person的类,该类有一个名为name的字段。封装建议对该类的客户端"隐藏"此字段,以便客户端不会损害或误用它。您可以通过将name属性设置为private来实现此行为(因此,唯一可以引用此属性的代码是实现Person的代码),并提供一个getter方法getName(),该方法将name属性返回给客户端。从外面无法到达该属性,也不会被滥用。弱封装将提供一个方法,该方法的副作用是更改此属性的状态,从而"暴露"该属性并创建漏洞。
Person
name
private
getName()
np8igboo2#
这是最基本的区别,根据使用情况和观点而有所不同。私有字段是强封装的示例。公共字段是弱封装的一个例子。在这种情况下,字段仍然封装在类中,但对外界可见。受保护/默认字段显示中度封装。
brgchamk3#
强封装意味着实现抽象的代码可以控制其字段的可见性(即从何处访问字段),而不会有任何漏洞被抽象范围之外的代码利用。弱封装允许这样的漏洞。
iyfjxgzm4#
强封装意味着一个类包含所有的属性访问级别为私有,每个方法为公共。然后,它满足强封装,然后该类被称为强封装类。通过强封装,我们不能直接从类外部访问任何属性。如果要访问或初始化属性的值,那么我们应该通过公共方法运行。弱封装就像类包含了私有之外的任何属性访问级别和公共之外的任何方法访问级别,那么该类就被称为弱封装类。
798qvoo85#
private & geterMethod =强封装private & seterMethod =弱封装
private & geterMethod
private & seterMethod
5条答案
按热度按时间sc4hvdpw1#
封装是一个OOP概念,它可以防止数据和函数受到外部干扰或误用。封装可以对客户端隐藏实现,并允许在不影响客户端的情况下更改代码。形容词"弱"或"强"指的是在代码中实施此概念的效果如何。
例如,假设您有一个名为
Person
的类,该类有一个名为name
的字段。封装建议对该类的客户端"隐藏"此字段,以便客户端不会损害或误用它。您可以通过将name
属性设置为private
来实现此行为(因此,唯一可以引用此属性的代码是实现Person
的代码),并提供一个getter方法getName()
,该方法将name属性返回给客户端。从外面无法到达该属性,也不会被滥用。弱封装将提供一个方法,该方法的副作用是更改此属性的状态,从而"暴露"该属性并创建漏洞。
np8igboo2#
这是最基本的区别,根据使用情况和观点而有所不同。
私有字段是强封装的示例。
公共字段是弱封装的一个例子。在这种情况下,字段仍然封装在类中,但对外界可见。
受保护/默认字段显示中度封装。
brgchamk3#
强封装意味着实现抽象的代码可以控制其字段的可见性(即从何处访问字段),而不会有任何漏洞被抽象范围之外的代码利用。弱封装允许这样的漏洞。
iyfjxgzm4#
强封装意味着一个类包含所有的属性访问级别为私有,每个方法为公共。然后,它满足强封装,然后该类被称为强封装类。通过强封装,我们不能直接从类外部访问任何属性。如果要访问或初始化属性的值,那么我们应该通过公共方法运行。弱封装就像类包含了私有之外的任何属性访问级别和公共之外的任何方法访问级别,那么该类就被称为弱封装类。
798qvoo85#
private & geterMethod
=强封装private & seterMethod
=弱封装