标签:
在Java的面向对象程序设计中,有三大基本特征:封装、继承和多态。首先我们先来看看封装:
在Java的面对对象程序设计中,封装(Encapsulation)是指一种将函数功能实作细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随便访问。如果要访问类中的代码和数据,必须要通过严格的控制。
使用封装主要有以下好处:
Java中一共有四个访问权限控制符,用来对类和对象的数据进行封装:
修饰符 | 类内部 | 同一个包 | 子类真 | 全局范围 |
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
对于外部类,也可以使用修饰符,不过外部类只能使用public和默认两种修饰符。
public class Person { //用private修饰符修饰,外部无法访问 private String name; //姓名 private int age; //年龄 private String idNum; //身份证号 //得到该类对象的姓名 public String getName() { return name; } //设置该类的对象的姓名,如果传入空值,则不赋值 public void setName(String name) { if(name.length() == 0 || name == null){ return; } this.name = name; } //得到年龄 public int getAge() { return age; } //设置年龄,当传入的参数大于等于0时,才将参数设置给该对象 public void setAge(int age) { if(age >= 0){ this.age = age; } } //得到身份证号 public String getIdNum() { return idNum; } //设置身份证号 public void setIdNum(String idNum) { this.idNum = idNum; } }
上面的例子中我们为该类中的属性增加了private修饰符,外部无法再直接访问和修改这些属性,如果有需要使用,我们则需要为其增加getXxx和setXxx方法访问这些事项,同时,我们也可以在这些方法中对这些属性的访问进行控制,比如姓名不能为空,年龄不能为负数等等。
这样我们并可见对程序的完整性和合理性进行合理的控制,也能更好的增强代码的安全性,也使代码能够更好的管理与维护。
public class Test { public static void main(String[] args) { Person p = new Person(); p.name = "张三"; //错误,无法直接访问 p.setName("张三"); p.setAge(-5); System.out.println(p.getAge()); //输出默认值0,尽管我们在上一行代码中传入一个数值,但是我们在setAge方法中做了控制,所以传入的负数并没有赋给p对象 } }
关于访问控制符的使用,我们使用应当尽量符合下面一些原则:
标签:
原文地址:http://www.cnblogs.com/hopeblog/p/5065317.html