封装与隐藏的含义
过将数据声明为私有的 (private) ,再提供公共的 (public) 方法即 getXxx() 和 setXxx() 实现对该属性的操作,以实现下述目的:
- 隐藏一个类中不需要对外提供的实现细节;。
- 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。
- 便于修改,增强代码的可维护性。
public class Demo {
public static void main(String[] args) {
Animal dog = new Animal();
dog.name = "大黄";
dog.age = 10;
dog.setLegs(10);
dog.show();
}
}
class Animal{
String name;
int age;
private int legs; // 通过权限限制符 用户将不可访问
// 对于属性的设置
public void setLegs(int l){
if( l >= 0 && l % 2 == 0){
legs = l;
}else {
legs = 0;
// 抛出异常
}
}
// 对于属性的获取
public int getLegs(){
return legs;
}
public void eat(){
System.out.println("eating");
}
public void show(){
System.out.println("name = " + name + " , age = " + age + " , legs = " + legs);
}
}
权限修饰符
- 封装性的体现需要权限修饰符的配合
表格:
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
private | yes | |||
缺省 | yes | yes | ||
protected | yes | yes | yes | |
public | yes | yes | yes |
总结补充
1. 属性赋值过程
赋值的位置
2. JavaBean
所谓javaBean,是指符合如下标准的Java类:
- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的get、set方法
例如:
class Person{
private String name;
private int id;
private Person(){
}
private void setName(String name){
this.name = name;
}
private String getName(){
return name;
}
private void setId(int id){
this.id = id;
}
private int getId(){
return id;
}
}
<br /> <br /> <br />