Java面向对象之封装
尊重原创 http://blog.csdn.net/erlian1992/article/details/50596564?ref=myread
一封装概述
(1)封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过类提供的方法来实现对隐藏信息的操作问。
在面向对象程式设计方法中,封装是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。
(2)封装的好处:
A要访问该类的代码和数据,必须通过严格的接口控制,只能通过规定的方法访问数据。
B隐藏类的实例细节,方便修改和实现,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义
的代码随机访问。
C封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
D适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
(3)封装的实现步骤
A修改属性的可见性,设为private
B创建getter方法和setter方法,用于属性的读写
C在getter方法和setter方法中加入属性控制语句,对属性值的合法性进行判断。
二封装实例
(1)最常见的封装过程实例
Test.java源代码文件代码:
[java] view plain copy
print ?
- public class Test{
- private String id;
- private String name;
- private int age;
- public String getId(){
- return id;
- }
- public String getName(){
- return name;
- }
- public int getAge(){
- return age;
- }
- public void setId(String newId){
- id = newId;
- }
- public void setName(String newName){
- name = newName;
- }
- public void setAge( int newAge){
- age = newAge;
- }
}
以上实例中public方法是外部类访问该类成员变量的入口。通常情况下,这些方法被称为getter和setter方法。因
此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。
通过如下的代码说明Test类的变量怎样被访问:
Run.java源代码文件代码:
[java] view plain copy
print ?
- public class Run{
- public static void main(String args[]){
- Test test = new Test();
- test.setId(“1234002”);
- test.setName(“李思思”);
- test.setAge(20);
- System.out.print(“id: “ + test.getId()+”,name: “ + test.getName()+ “,age:”+ test.getAge());
- }
}
上述的两个源文件需要放置在同一个包内,运行结果:
(2)加入属性控制语句的封装过程实例
改写实例(1)的代码:
Test.java源代码文件代码:
[java] view plain copy
print ?
- public class Test{
- private String id;
- private String name;
- private int age;
- public String getId(){
- return id;
- }
- public String getName(){
- return name;
- }
- public int getAge(){
- return age;
- }
- public void setId(String newId){
- id = newId;
- }
- public void setName(String newName){
- name = newName;
- }
- public void setAge(int newAge){
- if(newAge<0||newAge>100){
- System.out.println(“你输入的年龄不合规范!”);
- //年龄默认为0
- age = 0;
- }else{
- age = newAge;
- }
- }
}
Run.java源代码文件代码:
[java] view plain copy
print ?
- public class Run{
- public static void main(String args[]){
- Test test = new Test();
- test.setId(“1234002”);
- test.setName(“李思思”);
- test.setAge(200);
- System.out.print(“id: “ + test.getId()+”,name: “ + test.getName()+ “,age:”+ test.getAge());
- }
}
运行结果:
如果写入的年龄是20呢,输出的结果为:
还没有评论,来说两句吧...