如何实现Java的封装
来自CloudWiki
如何实现封装
Java中的封装不是为了做一个完全不能对外开放的类,这种类也没有任何存在意义。封装只是为了对类中的属性更好进行控制,因此要实现封装需要属性私有化,这样可以保证属性不会被其他类改动。然后使用公有方法把私有的属性暴露出去,在方法中对属性进行有效读写控制,也把这些方法称之为访问器。封装的实现需要提供三项内容:
- 一个私有的属性(变量),使用private来声明私有变量。例如:
private String name;
- 一个公有的读操作访问器,使用getter方法来完成。例如:
public String getName(){ //方法体 }
- 一个公有的写操作访问器,使用setter方法来完成。例如:
public void setName(String name){ //方法体 }
【实例3-5】使用封装技术模拟对学生借书的过程,要求学生最多只能借10本书。学生类中只有一个整数型变量count,为书的数量,对count设置时不能大于10,获得count值时不能获得一个负数。
- 初始代码:
在项目中新建一个类文件:
public class Student { private int count; public void setCount(int myCount) { count= myCount; } public int getCount() { return count; } }
在项目中新建MainTest类:
public class MainTest { public static void main(String args[]){ Student s=new Student(); s.setCount(11); int count=s.getCount(); System.out.println(“Count的值是:”+count); } }
- 改进代码:
public class Student { private int count; public void setCount(int myCount) { if(myCount<0 && myCount>10) System.out.println("获取错误"); else count= myCount; } public int getCount() { if(count<=0){ System.out.println("获取错误"); return 0; }else{ return count; } } } public class MainTest { public static void main(String args[]){ Student s=new Student(); s.setCount(11); s.setCount(5); int count=s.getCount(); System.out.println(“Count的值是:”+count); s.setCount(0); count=s.getCount(); System.out.println(“Count的值是:”+count); } }
程序运行结果如下:
设置错误 设置错误 Count的值是5 获取错误
【经验】
- 对于什么时候需要封装,什么时候不用封装,并没有一个明确的规定,不过从程序设计角度来说,设计较好的类属性都是需要封装。要设置或取得属性值,则只能用setXxx()、getXxx()方法。
练习题
- 完成课本P118页1-3三个习题,将三个类里面的所有成员变量都设为私有变量,并为其增加读方法和写方法。
返回 Java程序设计