Java教程专栏:.html
hello,I'm shendi
QQ交流: 157862665
目录
为什么需要封装?
加强程序安全性(可防内存修改器等)
在之前学过封装后,或许会有一些疑问
比如,在普通的变量中为什么需要封装?
有什么作用? 为什么不直接公开?
下面来一一解释
在之前举过例子
比如我们有个变量 a,在获取的时候想告诉别人我被使用了就要使用到封装,代码如下
private int a;public int getA() {System.out.println("a被使用了");return a;
}
并且我们可以通过封装来控制对外界是提供get,还是set,或者get,set方法
封装的方法获取都以 get开头,Java中命名是驼峰式,设置都以set开头
这里可能会有点不解(我当初也在这停留了许久)
比如为什么获取的代码都是 public int getXXX() {return XXX;}
设置的代码为什么都是 public void setXXX(int xxx) {=xxx;}
在获取的时候,我们函数上的int类型是方法的返回类型(与变量类型对应),return是将变量作为这个方法的返回值(也就是调用处可以将这个值存起来 例如 int a = getXXX();)
在设置的时候,函数上的void是无返回类型,因为是设置,所以不需要返回值,但需要知道要设置成什么,所以有一个与变量类型对应的参数,this代表使用当前类里的,而不是方法里的
但是对于普通的变量(获取,设置时不需要任何操作)
我们经常可以看到这样的代码
private int a;public int getA() {return a;
}public void setA(int a) {this.a = a;
}
那么这样封装有什么意义呢?(等价于将变量a设置为public)
首先,这样是一种规范,我们在使用IDE的时候(例如Eclipse,IDEA等),都会有代码提示
当我们照上面这样做了,别人只需要输入就可以看到这个类想让我们获取的属性了,set也是如此
封装总体来说就是将变量封装起来,让别人不知道在获取的时候干了些什么
封装一大特点就是可以加强安全性
例如我们基本上都知道内存修改器,比如玩游戏的时候(单机游戏),我们可以使用内存修改器来修改金币什么的
因为我们的变量的值都在内存中,一些单机游戏,软件之类就可以被内存修改器直接修改(比如植物大战僵尸)
Java则可以使用封装来有效避免这一操作
例如,我们有一变量int a,它的值为10,我们可以使用内存修改器将其修改成很大的数字
但是我们将变量a封装起来,将a的值减小1(这里怎样操作都行),然后get里的代码如下
// 值减小1,a的值原本是10
private int a = 9;
// 封装,在获取的时候我们将值+1
public int getA() {return a+1;
}
这样我们获取到的是10,但是变量a实际是9,于是内存修改器就搜索不到变量a的内存地址,也就无法修改了.
下一节学习方法的重载与重写
本文发布于:2024-01-31 07:51:25,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170665868626862.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |