1 封装
(1)方法就是一个最基本的封装体。(调用方法)
(2)类也是一个封装体。(可以让其他类去调用封装类的成员)
2 好处
(1)提高了代码的复用性
(2)隐藏了实现的细节
(3)对外提供可以访问的方式
第(2)、(3)可类比机箱,把机箱内部原件封装,我们只需要使用。但是我们要提供充电孔,网线孔等对外提供访问方式。
3 封装的使用
描述事物有时我们需要对属性设置访问私有化,这时我们就需要对外提供访问私有化成员变量的方式。
对于变量的操作:对封装的成员变量对外提供访问的方法
(1)赋值操作:set变量名()
(2)取值操作:get变量名()
封装类代码体:
public class Person {
// 属性:对成员变量进行封装(私有化)
private int age;
private String name;
// 对成员变量年龄进行赋值
public void setAge(int age){
//对用户输入的年龄进行判断
if(age>0 && age<150){
this.age =age;
}else{
// 抛出异常
throw new RuntimeException("您的年龄数值"+age+"是有误的");
}
}
// 对成员变量年龄进行取值操作
public int getAge(){
// 将成员变量的值返回到对象调用的方法中
return age;
}
// 对成员变量年龄进行赋值
public void setName(String name){
this.name = name;
}
// 对成员变量年龄进行取值
public String getName(){
return name;
}
// 行为
public void speak(){
System.out.println("name="+name+",age="+age);
}
}
测试类:
public class PersonDemo {
public static void main(String[] args) {
// 创建对象
Person per = new Person();
//调用成员变量
per.setAge(18);
int a = per.getAge();
System.out.println(a);
per.setName("coco");
String n = per.getName();
System.out.println(n);
//调用成员方法
per.speak();
}
}
效果:
4 总结
(1)对某个成员变量private(私有化)后,只能在本类中调用该变量。其他类若想调用该变量,就要通过赋值和取值操作类获取。
(2)赋值操作和取值操作只是java中定义的两个不同的功能。前者只是通过接受用户传来的参数对成员变量进行赋值,return可以省略不写。后者是对已经赋值之后的成员变量返回,需要具体的return功能。
(3)在下段代码中:
public void setAge(int age){
if(age>0 && age<150){
this.age =age;
}else{
throw new RuntimeException(“您的年龄数值”+age+“是有误的”);
}
对this.age=age进行分析:
1)this指向本类,左边的this.age指的是全局变量,右边的age指的是对象调用age时传进的参数
(2)如果左边不用this,这时两边的age都是参数传进的age,这时两边的age都是局部变量,没有意义。
对else{}进行分析:此处为什么需要抛出异常?
若此处改为输出语句,System.out.println(“您输入的年龄有误”);
在控制台console中不仅会输出输出语句,也会输出age的值,这样是不符合逻辑的。因为else后面要执行的代码体是说明用户输入的数据不符合,我们是想要提醒用户输入数据有误并且要中断程序继续执行下面的代码。
(3)调用私有化成员变量时:
要先调用赋值操作方法,在调用取值方法操作(有返回值,可进行接收)。