如何实现Java封装。。
1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:
public class Person {
private String name;
private int age;
}
在以上代码中,将name和age变量设为了private类型,这样就讲二者很好的隐藏在了本类内部,限制了外部类对二者的访问权限。
在上述例子中,类中定义的属性写法为String name,这样写的话用户便可以在本类中使用class名.name访问到这个属性,但由于其类型是private,对于外部类来说,该如何访问到呢?具体方法如2所述。
2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:
public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}
此处采用this关键字,主要是为了解决private String name和setName(String name)中的name变量间发生的同名冲突。或者也可以按如下方式定义setAge方法。
pubic void setAge(int newage){
age = newage;
}
接下来看一个java封装类的例子。
public class Test{
private String name;
private String id;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getId(){
return id;
}
public void setAge(int newAge){
age = newAge;
}
public void setName(String newName){
name = newName;
}
public void setId( String newId){
id = newId;
}
}
以上代码中的pubic方法便是外部类访问内部成员变量的“入口",通常情况被称为getter和setter方法,要想访问类中私有成员变量的类,都需要通过这些方法,下方代码说明了如何具体访问。
public class RunTest{
public static void main(String args[]){
Test test = new Test();
test.setName("wuyu");
test.setAge(22);
test.setId("wy12343");
System.out.print("Name : " + test.getName()+
" Age : "+ test.getAge() + " ID : " + test.getId());
}
}
编译运行结果如下: