java面对对象的封装性_Java 面向对象(五)面向对象特征之一:封装性(封装与隐藏)...

一、封装性的引入

1、高内聚,低耦合

高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:仅对外暴露少量的方法用于使用。

2、封装性的设计思想

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说, 把该隐藏的隐藏起来,该暴露的暴露出来。 这就是封装性的设计思想。

封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

3、问题的引入

当我们创建一个类的对象以后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约。除此之外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。(比如:年龄属性不能为负数等问题)

同时,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值。则需要将属性声明为私有的(private)。

至此,针对于属性就体现了封装性。

936413db36897480ba7d59297fe1e3b8.png

二、封装性的体现(Encapsulation)

1、信息的封装和隐藏

Java 中通过数据声明为私有的(private),再提供公共的(public)方法:getXxx()和 setXxx() 实现对该属性的操作,以实现下述目的:

(1)隐藏一个类中不需要对外提供的实现细节;

(2)使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

(3)便于修改,增强代码的可维护性;

2、Demo

1 public classZoo {2 public static voidmain(String[] args) {3 Animal animal = newAnimal();4 animal.setLegs(4); //animal.setLegs(-100);5 //animal.legs = -100;//非法的,The field Animal.legs is not visible

6 System.out.println(animal.getLegs());7 }8 }9

10 classAnimal {11 private int legs; //将属性legs定义为private,只能被Animal类内部访问

12 public void setLegs(inti) {13 if (i != 0 && i != 2 && i != 4) {14 System.out.println("Wrong number of legs");15 return;16 }17 legs =i;18 }19

20 public intgetLegs() {21 returnlegs;22 }23 }

注意:

对于 Getter 来说,不能有参数,返回值类型和成员变量对应。

对于 Setter 来说,不能有返回值,参数类型和成员变量对应。

3、封装性的体现

对封装性的体现不仅表现在上面的私有的 成员变量,还包括不对外暴露的私有的方法,私有的构造方法等。

三、四种访问权限修饰符

1、四种访问权限修饰符

Java权限修饰符public、 protected、 (缺省)、 private置于类的成员定义前,用来限定对象对该类成员的访问权限。

4410b20c906512b81bab1d66dff04e45.png

对于 class 的权限修饰符只可以用 public 和 default (缺省)。

public 类可以在任意地方被访问。

default 类只可以被同一个包内部的类访问。

cca27d277a7006d04609efac9c430cbe.png

2、封装性的体现,需要权限修饰符来配合

(1)Java 规定的4中权限(从小到大排列):private、缺省、protected 、public

(2)4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类;

(3)具体的,4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类;

(4)修饰类的话,只能使用:缺省、public;

3、每种权限修饰符可以修饰什么?

类(类、接口等)、属性、方法、构造器、内部类

修饰类(外部类):public 和 缺省

修饰属性:  4种都可以

修饰方法:  4种都可以

修饰构造器:  4种都可以

修饰内部类:  4种都可以

编写代码时,建议这样使用权限:

成员变量使用 private,隐藏细节;

构造方法使用  public,方便创建对象;

成员方法使用  public,方便调用方法;

总结封装性:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值