您的位置:首页 > 编程语言 > Java开发

Java面向对象之封装

2017-09-28 19:24 337 查看
通常情况下在测试类中可以给成员变量赋值一些合法但不合理的数值(如年龄为负数),而程序的执行过程无法检测和提示,此时不符合生活实际。

为了避免类似的情况发生,就需要给成员变量的赋值操作进行合理性的判断和提示,该方法就叫做封装,通俗的说,封装就是一种保证成员变量合理的机制。

编程实现Person类的封装

public class Person{

//1.私有化成员变量
private String name;     //用于描述姓名的成员变量
private int age;         //用于描述年龄的成员变量
//static关键字修饰成员变量表示隶属于类层级,被所有对象共享
/*因为我们的country是一样的,所以提取到类层级上
*/
public static String country; //用于描述国籍的成员变量

//3.在构造方法中调用set成员变量的方法进行合理值的判断
public Person(){
}
public Person(String name, int age, String country){
setName(name);
setAge(age);
setCountry(country);
}

//2.提供公有的get成员变量和set成员变量的方法,并在方法体中进行合理性的判断
public String getName(){
//...
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
if(age > 0 && age < 150){
this.age = age;
}
else{
System.out.println("年龄不合理!!!");
}
}
public String
4000
getCountry(){
return country;
}
public void setCountry(String country){
this.country = country;
}

public void show(){
/*
System.out.println("我是" + name + ",今年" + age + "岁了,来自" + country);
*/
//推荐使用 利于修改和维护(便于在成员方法中修改)
System.out.println("我是" + getName() + ",今年" + getAge() + "岁了,来自" + getCountry());
}
}


编程实现Person类的测试

public class TestPerson{

public static void main(String[] args){

System.out.println("国籍是:" + Person.country);  //null

Person p1 = new Person("zhangfei", 30, "China");
p1.show();

Person p2 = new Person("guanyu", 35, "China");
p2.show();
/*被static定义的成员变量提升为类层级,在方法区申请了一块内存,被所有线程共享,
也就内存地址指向同一个地址,所以在任何一个对象下面修改,所修改的内容指向的地址
都是同一个,即方法区中的成员变量的实际值被修改了*/
p1.country = "America";
System.out.println("p1.country = " + p1.country); //America
System.out.println("p2.country = " + p2.country); //America

Person p3 = new Person();
System.out.println("p3.country = " + p3.country); //America
}
}


封装的流程步骤:

(1)私有化成员变量,使用private关键字修饰;

(2)提供公共的get成员变量和set成员变量方法,在和
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: