zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第六章-封装代码示例

    一. 面向对象的特征

    第一个特征:封装。

    什么叫隐藏实现细节?

    在这里的PersonDemo类除了创建对象外,还有什么其他作用么?为什么要有这个类出现。、

    如果对age赋值为-20,DOS输出为-20。虽然输出没错,但是不符合事物的基本原则。

    之所以会出现这样的不符合实际情况的数据,那是因为age在直接被其它程序创建对象后访问。说白了,我创建了一个对象,直接就访问了对象里的age数据。这就造成了安全隐患,造成了不确定性。

    怎么解决这个问题?不允许访问就可以。可以使用关键字private,私有的意思,来实现这个目的。

    理清一下思路,为什么要将age私有,就是age可以随便访问,同时会往里面赋一些不允许的值,产生安全隐患。

    修改程序后,再进行程序执行,DOS直接报错。意思就是私有的东西只能在本类中有效。其他的里面,即使创建了对象,也访问不到

     对age进行private之后,得到的结果如下,DOS直接进行了报错。

    结果表明:私有化之后,再去访问,就代表没有这个属性。也就是说把内容全都藏起来,作为对付安全隐患的手段也不合适。或者,直接对外开放也不合适。

    直接对外开放,不安全。把它藏起来,访问不了。因此,要取个折中。

    我们把成员变量私有了,但是可以对外提供一些方法。

    方法中的age和类的成员变量的age是同一个么?

    这里的思想是什么?用通俗的话来说更容易理解,一个房间有一个门,任何人都可以进入,这会造成东西的丢失。现在把这个门换成一堵墙,这样一来,安全性得到了提高,但是完全无法访问。折中的办法就是在门上装个锁,只有有钥匙的人才可以进来。上面多定义的一个方法,就是门上的锁。通过调用方法,来访问age变量。而且,我是觉着既然方法里的age和private的age不是一样的,相当于重新定义了一个age,但是如果是重新定义,不需要书写类型么?这样一来,private的age就显得没什么用,private关键字也就没什么意义。

    int a中的a是输入到方法中的,它就相当于一把钥匙,它合不合适,需要用if语句来进行判断,而if语句只能放在方法中。这就是为什么定义函数的原因。不定义函数,if无法放置在类中。

    补充:在门上加上锁之后,也就定义了一个含有判断语句的函数之后,类中private化age的语句没有进行删除,那么是否意味着,函数中的age可能就是private中的age呢?

    对于一个变量,我们对它的操作,通常只有两个动作,要么给它赋一个值,要么把它的值拿出来用。专业术语叫,设置值和获取值。通常,设置和获取会采用一些名词来表示。

    上面两个方法,一个是对age进行设置,一个是对age进行获取。

     

    上图的两个方法是不一样的。

    set和get两个方法在java中是很常见的,通常对于描述类中的成员变量,都是私有化的,而且一个变量要对应两个方法。java中提供了快捷键,自动出现设置和获取两个类(目前所学的很多都是背后的原理,虽然思维上可以有一些提升,但是在实际的应用中很难用到。)

    二. 封装

    通过上面的例子,我们可以明白封装的定义隐藏属性和实现细节是什么意思。

  • 相关阅读:
    git add 添加错文件 撤销
    ArcMap中对失量数据将具有相同的字段的元素进行合并
    win10系统黑屏无法显示桌面解决
    C#
    git push的时候报错: Out of memory, malloc failed (tried to allocate 82037333 bytes)
    在abp core中出现运行项目时EF获取到的appsetting.json或者appsettings.Production.json中的连接字符串为空
    navicat连接数据库报错:未发现数据源名称并且未指定默认驱动程序
    HDU
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7638764.html
Copyright © 2011-2022 走看看