你能帮我理解封装吗(初学者)?

Mr *_*cus 1 java oop getter setter encapsulation

我一直在使用一本迄今为止非常出色的Java书籍,但它并没有很好地解释我们使用setter和getter的原因.我搜索了其他帖子,但没有一个真正帮助过我.我将从书中发布一个程序并解释我的问题.

   package lesson1;
public class GoodDog {
   private int size;

   public void setSize(int sz){
      if(sz > 10){
         size = sz;
      }
   }
   public int getSize(){
     return size;
   }
}
Run Code Online (Sandbox Code Playgroud)

二等:

   package lesson1;
public class GoodDogTestDrive {

   public static void main(String[] args) {
      GoodDog one = new GoodDog();
      one.setSize(15);
      System.out.println(one.getSize());
   }
}
Run Code Online (Sandbox Code Playgroud)

这是我的第一篇文章,所以如果没有代码那么请原谅我.不要问为什么这些课程被命名为,我没有想象力,只是使用了这本书的名字.

无论如何,我的理解是封装(对我来说这基本上意味着getter和setter)阻止了对即时变量的直接访问.唯一有效的原因是因为不应允许某些即时变量值.

比如说我们有int高度; (即时变量)我们不应该说object.height = 0; ('object'是随机引用变量).在我的小程序中,它只是一个狗的高度,只是一个简单的限制.这并不意味着有意义,但我只是想弄清楚这个概念.当程序员需要使用彼此的代码时,封装是否仅仅适用于编程公司.比如,以游戏为例,还是与众不同?

我观看了一段视频,说它只是简化了代码管理.但是我仍然不觉得我完全理解这个概念.有人可以用简单的语言向我解释.请注意,我是初学者,不会理解涉及中间代码的示例.

谢谢您的帮助.

Ell*_*sch 5

如果我理解你的要求,你可以将封装视为利用编程语言的数据隐藏功能的做法.面向对象的核心原则之一是对象包含对该数据进行操作的数据和方法.封装是数据的一般内部化,因此只有对象自己的方法才能修改对象的状态.