14.2 在程序设计中为什么要使用封装
类包括有属性变量和方法函数,有些函数不能让软件使用者知道其是如何实现的。有的属性变量也不需要软件使用者去修改它。这个时候,就需要使用封装,将某些方法函数和属性变量进行包装。而软件开发人员只能使用,不能修改它们。
【实例14.3】下面将举一个有关封装的实例。
01 ///这是一个主运行类
02 ///在主运行方法中,通过设置器设置参数值
03 ///将三个花对象以字符串形式输出
04 public class thread44
05 {
06 public static void main(String[]args)
07 {
08 flower f1=new flower();
09 flower f2=new flower();
10 flower f3=new flower();
11 f1.setname("牡丹");
12 f1.setcolor("红色");
13 f1.setlocation("云南");
14 f2.setname("玫瑰");
15 f2.setcolor("黄色");
16 f2.setlocation("北京");
17 f3.setname("月季");
18 f3.setcolor("蓝色");
19 f3.setlocation("上海");
20 System.out.println(f1.tostring());
21 System.out.println(f2.tostring());
22 System.out.println(f3.tostring());
23 }
24 }
25 ///这是一个花类
26 ///通过private关键字设置多个有关花类的私有变量
27 ///通过设置器来设置花对象的属性
28 ///通过访问器来获得花对象的属性
29 ///通过tostring方法让对象以字符串形式输出
30 class flower
31 {
32 private String name;
33 private String color1;
34 private String location;
35 public void setname(String name)
36 {
37 this.name=name;
38 }
39 public void setcolor(String color1)
40 {
41 this.color1=color1;
42 }
43 public void setlocation(String location)
44 {
45 this.location=location;
46 }
47 public String getname()
48 {
49 return name;
50 }
51 public String getcolor()
52 {
53 return color1;
54 }
55 public String getlocation()
56 {
57 return location;
58 }
59 private void print()
60 {
61 System.out.println("这个就是"+name);
62 }
63 public String tostring()
64 {
65 String information="花的名称:"+name+";"+""+"花的颜色:"+color1+";"+""+"花的出产地:
66"+location+"";
67 print();
68 return information;
69 }
70 }
【代码说明】在这个程序段的flower类中,第59行有一个私有方法“print()”,这个方法函数不想让使用者知道其是如何操作数据的,只有“flower”类中的方法能访问它们,外部类访问它们,则会被拒绝。如果使用对象句柄去访问“print()”方法,则会在编译时出错。代码在第67行中使用了“print()”方法。
【运行效果】
这个就是牡丹
花的名称:牡丹;花的颜色:红色;花的出产地:云南
这个就是玫瑰
花的名称:玫瑰;花的颜色:黄色;花的出产地:北京
这个就是月季
花的名称:月季;花的颜色:蓝色;花的出产地:上海
下一小节学习如何封装稍微复杂的综合实例。