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()”方法。

【运行效果】


这个就是牡丹

花的名称:牡丹;花的颜色:红色;花的出产地:云南

这个就是玫瑰

花的名称:玫瑰;花的颜色:黄色;花的出产地:北京

这个就是月季

花的名称:月季;花的颜色:蓝色;花的出产地:上海


下一小节学习如何封装稍微复杂的综合实例。