Java的面向对象

03-封装与隐藏的理解

2021-07-01 277 0

简介 理解封装与隐藏,面向对象基础中的基础!

1. 封装与隐藏

    为什么需要封装?封装的作用和含义?

     我要看电视,按遥控器调解音量大小,切换节目,只需要按遥控器就可以了,不需要了解遥控器的内部实现细节。

     我要开车,不需要了解发动机的实现细节

    我们程序设计追求“高内聚,低耦合”。

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

     低耦合 : 仅对外暴露少量的方法

    隐藏对象内部的复杂性,只对外公开简单的接口。

    便于外界调用,从而提高系统的可维护性,减少外部依赖。通俗的说, 把该隐藏的隐藏起来,该暴露的暴露出来。 这就是封装性的设计思想。

2.封装与隐藏的举例

    当我们创建一个类的对象以后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值。

    这里,赋值操作要受到属性的数据类型和存储范围的制约。除此之外,没有其他制约条件。

    但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。

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

    -->此时,针对于属性就体现了封装性。

      我们将类的属性xxx私有化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值,这只是封装性的体现之一。注意: 这只是封装性的体现之一,不代表全部封装性。

      

      拓展:封装性的体现:① 如上  ② 不对外暴露的私有的方法,提供类内部使用  ③ 单例模式   ...

//AnimalsTest.java
package com.ylaihui.oop1;

class Animals{
	private int legs;
	public void setLegs(int l){
		if(l <= 0 || l % 2 == 1)
			legs = 0;
		else
			legs = l;
	}
	public int getLegs(){
		return legs;
	}
}
public class AnimalsTest {
	public static void main(String[] args) {
		Animals a = new Animals();
		a.setLegs(-10);
		//System.out.println(a.legs);  // The field Animals.legs is not visible
		System.out.println(a.getLegs());
	}
}


点赞 0

文章评论

欢迎您:

纸上得来终觉浅,绝知此事要躬行!

112 文章 36783 浏览 3 评论

联系我

  •   QQ:    361352119
  •  Email:  lisimmy@sina.com
  • 微信: