封装性

上一篇 / 下一篇  2013-11-27 22:18:05 / 个人分类:java

51Testing软件测试网!e fB#o$])Fr+n
51Testing软件测试网4rq{)w#k

掌握封装的产生目的

R+pW`0BR/l0

掌握封装的实现51Testing软件测试网pV i]-tF$r%~+q8i

掌握settergetter方法的定义

I1V!r zj[2c0

 51Testing软件测试网*k#Nd&N+hSG

 51Testing软件测试网"bPvSvs#Q"K

1.        为什么要有封装?51Testing软件测试网t{H/M6W;wI#q

封装就是保护内容,保证某些属性或方法可以不被外部看见51Testing软件测试网}$k'Ak d#ez

class Person{51Testing软件测试网Z#G5}U8L,Ne

        //人中有姓名和年龄两个属性

H3l;?YUag ^0

        String name ;              //表示姓名51Testing软件测试网]k@%GY8ix

        int age ;                  //表示年龄51Testing软件测试网*e5h&p+R9C

        public void tell(){        //取得信息51Testing软件测试网6g{$@ | h#K+XN7X1n y

            System.out.println("姓名" + name + "年龄:" + age) ;51Testing软件测试网:xq Z ^/q [

        }

4~.Uh q]7LE v/N0

    } ;51Testing软件测试网 Ub!c*c J)e g0`

    public class EncDemo01{

*pCUKX\2`0

        public static void main(String args[]){51Testing软件测试网 C8?F U_:l

            Person per = new Person() ;   //声明并实例化对象

2Zq$qb[G+V;|8g0

            per.name = "张三" ;           //name属性赋值

/Iw|2D!t!CfLv0

            per.age = -30 ;                //age属性赋值

I)zd9z%^cp_[0

            per.tell() ;

+J)U:I1}:Iv9[y0

        }

3? N%Wcf#xf ]Po0

    } ;

1I5_"p/jie_E0

 51Testing软件测试网$R"\dp lIN

语法上讲没有问题,但从实际角度看,不符合,根本是属性可以被外部直接访问,如年龄不可以为负数51Testing软件测试网8yo-@Hx&k

 51Testing软件测试网v3l @+DQK

 51Testing软件测试网;P3P%hpu

2.        实现封装:51Testing软件测试网g(U'|XDLj

为属性封装:private属性类型 属性名称

c.{-h,K2qX0

为方法封装:private 方法返回值  方法名称(参数列表){}

d^A0V#hig0

 

R&H3~r-oF4CI0

  class Person{

AB7I4f-WWH8uK&A)M;G0

        //人中有姓名和年龄两个属性

J-F(Tg&P#n A'oqPlt0

       privateString name ;              //声明姓名属性

n-W0B/a6\ {'h0

       privateint age ;                  //声明年龄属性

.?OO R,u1J%u3W0

        public void tell(){        //取得信息51Testing软件测试网 z4s4O0o$c*WxZ

            System.out.println("姓名" + name + "年龄:" + age) ;

J$]/Z5\%`V0

        }

xy-~2Xw,Z:f0

    } ;

"`!PX,^/D+|}0

    public class EncDemo02{51Testing软件测试网*DKi8\F2@'n

        public static void main(String args[]){

)[8e|yi9Ep2qi0

            Person per = new Person() ;   //声明并实例化对象

B"c9P4{,J/G w${`0

            per.name = "张三" ;           //name属性赋值

H'Y _6vV0Q%gG Kk0

            per.age = -30 ;                //age属性赋值

4['] U/LPG;m9N r0

            per.tell() ;

],V|yb Q&Y9PS0

        }51Testing软件测试网/Dp1vn-[p

    } ;

5qv(V;|a4HA @0

 

ubz(@M0

输出:51Testing软件测试网yRZr]1_"h0AQ

EncDemo02.java:12:错误: name可以在Person中访问private51Testing软件测试网D4@Xf3j!N N v$u:?,v U

            per.name = "张三" ;           //name属性赋值51Testing软件测试网;N j[B uq/l8A9Ku#F

               ^

LLY\"S5f1yOU&~0

EncDemo02.java:13:错误: age可以在Person中访问private51Testing软件测试网 ["eC)s5Ja

            per.age = -30 ;                //age属性赋值

d{,ZKb e0B0

               ^51Testing软件测试网7Yel PX

2个错误

,bvd\s|Dk0

 51Testing软件测试网*K8R Mm1Y7d4F

提示是一个私有的访问权限,外部无法调用

s'uBAY0

 

l.e&\$i xG.g0

 

Z3hM7q|0

3.        访问封装的内容51Testing软件测试网'M7]`!q)x"anS

class Person{

$E)i(eC,fmG)E0

        //人中有姓名和年龄两个属性

q-^cF:g[0

        private String name ;              //声明姓名属性

'DFlA,_0

        private int age ;                  //声明年龄属性51Testing软件测试网3i-yx.L?B%WBh

        public void setName(String n){     //设置姓名51Testing软件测试网.qe!n C$S-xDRd?

            name = n ;

EGy-| j[b_r;c0

        }51Testing软件测试网5f HZW7j0i9E5B

        public void setAge(int a){         //设置年龄51Testing软件测试网'UoMk@+E'r3C

            age = a ;

w8C0Oa[:Ip2}v0

        }

n1kGTP^0

        public String getName(){           //取得姓名

&f[#H8F8o9E0

            return name ;

BL7pt y#] Y4T%_0

        }

"Z4q#NWa0

        public int getAge(){           //取得年龄51Testing软件测试网-f$G9A/G&O'}N1}6~

            return age ;

'P q6A*Q)Y]^z0

        }51Testing软件测试网M E/H5`(l3k8\

        public void tell(){        //取得信息51Testing软件测试网;`'J/t2u}%| N.a

            System.out.println("姓名" + name + "年龄:" + age) ;

g k8?(yJ5?f-~Q7D0

        }

7HB$`"ZL |Z0

    } ;51Testing软件测试网%a;K^g-yA'|)rn

    public class EncDemo03{

&a.M8st/mRlg%b$^ p%Q0

        public static void main(String args[]){

5[-R i9xt(xWp0

            Person per = new Person() ;   //声明并实例化对象51Testing软件测试网6D$IkbM"V(Z OPc6|

            per.setName ("张三") ;           //调用setter设置姓名51Testing软件测试网GY K(Q"Q#X;bq

            per.setAge(-30) ;                //调用setter设置年龄

)c,?fP!_i0

            per.tell() ;51Testing软件测试网|$o)h#]t9y RisY

        }51Testing软件测试网q"^z"~(qn/gqUF

    } ;

B:K2g _!I;J?0

 51Testing软件测试网 q#Q`9l#D?5lX

输出:

6I"NP,`uK?8Q0

姓名:张三,年龄:-30

)Uh0P| v8F!@:rL0

 51Testing软件测试网s$@XvL Xj6k

对象可以访问封装的内容了,但是没有检测机制:

(Yt+hr-u,X0

class Person{

\KV{9g/u*]%b:`0

        //人中有姓名和年龄两个属性51Testing软件测试网)x(?5qPU

        private String name ;              //声明姓名属性51Testing软件测试网'z)T-mx-^s9K$\

        private int age ;                  //声明年龄属性

lRP#K3FI!CbD0

        public void setName(String n){     //设置姓名

rZ7D&T;z[/j5j0

            name = n ;51Testing软件测试网6r}v7c?:U)O

        }

Oo fL:m Fe0

        public void setAge(int a){          //取得年龄

Qj yj| _Ee0

          if(a>=0 && a<=150){             //加入验证51Testing软件测试网oUsHUtJ

               age = a ;51Testing软件测试网 g$F.fl x*j5l'S2F-W

           }51Testing软件测试网 N.McG5L$`_

        }51Testing软件测试网uJ0a;UN;E&Wo6d6K

        public String getName(){           //取得姓名51Testing软件测试网,}P#^`*^.~$kf8d

            return name ;51Testing软件测试网 d(]Gg/z D

        }

7M-Dgosh5r0

        public int getAge(){               //取得年龄51Testing软件测试网ixN8BfI? d

            return age ;

\0ShI2`PF4d:]n0

        }51Testing软件测试网4bm`O_G

        public void tell(){                //取得信息

0e,fA]8O J#f0

            System.out.println("姓名" + name + "年龄:" + age) ;

+FB,U.r(C;x XuUA0

        }

Q*__G"c.Y;I2pg:_p0

    } ;

^9{hd$_0

    public class EncDemo04{

t3\&FC-D5Lj4[S0

        public static void main(String args[]){

JV i ?%p8p(W0

            Person per = new Person() ;   //声明并实例化对象51Testing软件测试网h5zVC!W*^

            per.setName ("张三") ;           //调用setter设置姓名

$p3M|6_2o Mu:`M0

            per.setAge(-30) ;                //调用setter设置年龄

6Jcg1j{B#UgYS0

            per.tell() ;51Testing软件测试网Soc`+q b|

        }

8`F.R9i]D3] `0

    } ;  

Mz-A9LM~ o1o2w&~0

输出内容:

~ M5m3q,rVP;n0

姓名:张三,年龄:0

jT9h#V!uN| ]:g0

 

r r8D0[&J(ee/Q5U051Testing软件测试网vN?.Pd


TAG:

 

评分:0

我来说两句

luoriver

luoriver

北漂一族,80后,计算机专业,从事SIP相关软件测试3年,热爱生活,崇尚运动。 爱看WWE、公开课。爱钻“牛角尖”,这就是我:luorivr!!!!!

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 345997
  • 日志数: 96
  • 图片数: 1
  • 建立时间: 2012-12-27
  • 更新时间: 2014-05-03

RSS订阅

Open Toolbar