[Java教程]26.封装概念加强

阅读: 评论:0

[Java教程]26.封装概念加强

[Java教程]26.封装概念加强

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小时内删除。

标签:概念   教程   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23