java 面向对象程序设计浅谈三

       今天将继续解读"java 面向对象程序设计",今天将要博的是:封装,前面所设计的Animal类,其中legs属性是让其他所有的类都能够直接使用或是修改,这样的方式直接简单,但有个严重问题,legs 属性是int类型,范围很大,可以是负数,这和现实对象中的数据有所不同,所以我们必须要保护这类的属性,防止别人乱用,保护的方式就是把属性隐藏起来,只能通过特定的方法才能访问,修改这个属性.这是面向对象程序设计的一个非常重要的观念-----信息隐藏(information hidin).目的主要有两个,一个就是刚刚提到的保护类中的数据,不让这些数据被错误地使用或破坏;第二个就是隐藏些不需要给别人知道的细节,以防止别人误会.

        为了实现信息隐藏的目标,把原来类中的public,改成private,private 是访问权限最小的,只有它自己可以访问.下面将原来的UML重写:

Animal

-legs:int

+Animal()

+Animal(int1:int)

+eat()

+move()

+getLegs():int

+setLegs(1:int)

      图中legs属性前面是表示public的加号"+",变成了表示private的"-".而下面多了两个方法,一个是setLegs,一个是getLegs,下面用java写出来来.

 

public   class  Animal
{
    
private int legs;
    
public Animal()
    
{
         setLegs(
4);
     }

public Animal(int l)
{
setLegs(l);
}

public void eat()
{
System.out.println(
"eating");
}

public void move()
{
System.out.println
"Moving");
}

public void setLegs(int l)
{
if(l!=0&& l+=2&&l!=4){
System.out.println(
"Wrong number of legs!");
return;
}

legs
=l;
}

public getLegs(){
return legs;
}

}

 

      这个新版的Animal类程序代码,除了上面说的信息隐藏,在setLegs方法中,我们还验证传入的数值是不是0,2,4,即顺便检查一下从构造函数所传入的参数值是否正确.

      信息隐藏只是"封装"(encapsulation)的一个最主要的目的,封装是面向对象程序设计中一个重要的特性,它除了把一些重要的信息隐藏起来外,还有几个特点:

隐藏类实现的细节:

     对于用户来说,因为他看不到已经声明为private的属性,只能由一些特定的方法才能来访问这些数据,至于类内部到底如何动作的,用户并不知道也不需要知道.

强制用户通过单一窗口访问数据:

     因为信息已经被隐藏起来,所以除了通过指定的方法之外,没有别的路径可以访问到类中的数据,因些每个人使用此类的方式都是一致的.

程序维护容易:

      因为通过单一窗口来访问对象的一些属性和数据,所以用户只需要知道窗口是哪一个,至于类内部如何去取得,可能直接是返回一个变量值,或是去读取数据库,或是从网络上捉取,都不会影响用户的使用,所以在程序代码的更新或维护上变得更容易.

      ok,今天就说这些了,就是"封装";信息的隐藏.要过年了,我的心情也不错,因为我又长大了一岁,又学会了很多东西,又遇到了很多挫折,又更坚强了,又更成熟了...:)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值