Java 封装

private 限定只能在当前类内访问只设置了getter 方法的属性是只读属性只有set方法的属性是只写属性
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
private 限定只能在当前类内访问
只设置了getter 方法的属性是只读属性
只有set方法的属性是只写属性

关于封装应用中的常见问题

1、如果不用封装,在要调用的普通成员方法中编写相关限制代码,实现避免在主方法中所调用属性及方法的值被非法篡改,这样不也可以吗,为什么一定要用封装?

在面向对象的的设计思想中,封装可以理解为是一种利用抽象的函数接口实现细节信息的包装隐藏的方式。我们可以把封装认为是一个保护屏障,防止该类的私密代码和数据被外部类定义的代码随机访问和修改。简单来说,就是“按我的规则,才能玩我的游戏”。而在隐藏信息的同时,我们还要注意“职责单一”原则的应用,也就是“各司其职”。

如果只是从功能实现的角度来说,当然可以将限制代码写在任意的功能实现方法中,但是试想,如果一个类中,有10个功能性方法中需要针对某一属性进行相同的设定,我们是设置一次方便,还是设置十次更方便安全呢?

因此,适当的封装可以让代码更容易理解与维护,也加强了安全性。调用者不能随意通过“变量名.属性名”的方式来修改类中的私密数据信息;同时,在使用的时候,也只需直接调用封装后的方法即可,无需再操心细节处理。

2、get/set 用两个方法实现取值、赋值,放在一个方法里不是更简单?是否可以改成别的名字呢?

如果仅仅是为了实现功能,那么,无论是写在一个方法里,还是用其他名字命名方法都是Ok的。但是,在基于面向对象的编程思想中,更推荐大家采用get/set方法分别实现“取值”和“赋值”的功能,让他们“各司其职”,也更加“通俗易懂”,毕竟当业务越来越复杂,团队协作的时候,“约定俗成”会比“各有千秋”更有价值。

3、有了get/set方法,为什么还需要带参构造方法?或者说,在构造方法中直接写if…else…判断限制输入输出结果不行么,为什么要多写两个方法get/set ?

构造方法与get/set方法的作用是不同的,构造方法只能在创建对象时进行调用,如果在对象构建完成后,再想对其某些属性进行赋值和取值,就无法再次应用构造方法啦。因此两者的存在并不冲突,我们可以应用带参构造在对象初始化时进行某些属性的设置,也可以通过get/set方法,在对象构建完成后进行后续修订。

4、main方法中为什么可以添加return? 什么时候能加?有什么作用?是否可以用break进行替换?

关于return和break的应用:

当方法中出现return表示方法运行终止; 当出现break则表示循环语句或者swith语句运行结束。

如果方法设置了返回值,那么必须出现return,应用return带回返回值;如果方法的返回值为void,也可以出现return,但是后面什么也不能加,直接加分号结束。

因此,主方法中的return语句不能与break随意替换。

5、private修饰的成员怎么用?

在同一个类中,可以直接访问。譬如:在这里插入图片描述
在不同类中,需要通过对应的非私有方法访问。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值