访问修饰符是否可以在Encapsulation中扮演任何角色

时间:2016-02-27 09:39:50

标签: java oop encapsulation access-modifiers

这是一个具有公共属性和公共方法的类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

我确信它是适用的,因为它们在一个类中被绑定在一起,可能我们可以称之为弱封装但是有封装。

但我不知道如何证明它,因为我的搜索显示类属性应该是私有的。

更新:默认访问说明符的情况。

2 个答案:

答案 0 :(得分:3)

另一个例子是Encapsulation正在隐藏数据

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

这基本上意味着你应该将属性的访问修饰符更改为private并允许通过方法访问属性

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

引用

答案 1 :(得分:1)

我不同意。封装是指仅由同一对象上的方法操纵的隐藏数据,它具有封装意义:

  Java中的

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

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