2016-02-27 69 views
3

玩这是一类Encapsulate具有公共财产和公共方法。确实访问修饰符有任何作用,在封装

class Encapsulate 
{ 
    public int a; 
    public int b; 

    public static void main(String...s) 
    { 
    Encapsulate e = new Encapsulate(); 
    e.setVar(10,20); 
    System.out.println(e.getSome()); 
    } 

    public void setVar(int a, int b) 
    { 
    this.a = a; 
    this.b = b; 
    } 

    public int getSome() 
    { 
    return a + b; 
    } 
} 

OOP概念Encapsulation跟在这里?

我相信,因为二者都是在一个类粘合在一起是适用的,可能是我们可以称之为弱封装但封装。

但我不知道如何来证明这一点,因为我的搜索表明,类属性应该是私有的。

更新:在默认访问说明符的情况下什么。

+0

引用来访问属性我不知道,如果真的是正确的,但通常我说*数据隐藏*和*封装*是相关的,但不相同。 – meskobalazs

+0

这可能很有趣:http://programmers.stackexchange.com/questions/173547/what-is-the-difference-between-data-hiding-and-encapsulation – meskobalazs

+0

如果我是绑定属性和方法使用公共访问说明符,比其他类隐藏起来并且结合在一起(这就是封装),除了其他类实例化或扩展它们。 –

回答

1

我dissagree。封装指的是隐藏的数据只能通过同一对象上的方法来操作,它使封装有意义:

Java中的封装是封装数据(变量)和代码作用于数据的机制(方法)一起作为单个单位。在封装中,一个类的变量对其他类是隐藏的,并且只能通过它们当前类的方法访问,因此它也被称为数据隐藏。

看看这里,正确解释。 http://www.tutorialspoint.com/java/java_encapsulation.htm

3

继承人另一个例子是封装隐藏数据

软件对象是概念上类似于现实世界的对象:他们也包括状态和相关的行为。对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并要求通过对象方法执行所有交互被称为数据封装 - 数据封装 - 面向对象编程的基本原则。

这基本上意味着你应该改变的属性,以私人的访问修饰符和允许通过方法

https://docs.oracle.com/javase/tutorial/java/concepts/object.html