封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别
Java封装的基础知识
封装的好处
1.只能通过规定的方法访问数据。
2.隐藏类的实例细节,方便修改和实现。
实现类的封装
1修改属性的可见性,在属性的前面添加修饰符 (private)。
2对每个值属性提供对外的公共方法访问,如创建 getter/setter(取值和赋值)方法,用于对私有属性的访问.
3在 getter/setter 方法里加入属性的控制语句,例如我们可以加一个判断语句,对于非法输入给予否定。
封装的概念图
具体步骤
首先在类里要将属性前添加 private 修饰符。然后定义 getter 和 setter 方法。修改 People.java 和 NewObject.java 的内容如下。
public class People {
//属性(成员变量)有什么,前面添加了访问修饰符private
//变成了私有属性,必须通过方法调用
private double height; //身高
//属性已经封装好了,如果用户需要调用属性
//必须用getter和setter方法进行调用
//getter和setter方法需要程序员自己定义
public double getHeight(){
//getter 方法命名是get关键字加属性名(属性名首字母大写)
//getter 方法一般是为了得到属性值
return height;
}
//同理设置我们的setter方法
//setter 方法命名是set关键字加属性名(首字母大写)
//setter 方法一般是给属性值赋值,所以有一个参数
public void setHeight(double newHeight){
height = newHeight;
}
}
现在 main 函数里的对象,不能再直接调用属性了,只能通过 getter 和 setter 方法进行调用。
public class NewObject {
public static void main(String[] args) {
People LiLei = new People(); //创建了一个People对象LiLei
//利用setter方法为属性赋值
LiLei.setHeight(170.0);
//利用getter方法取属性值
System.out.println("LiLei的身高是"+LiLei.getHeight());
}
}
运行结果
javac NewObject.java People.java
java NewObject
LiLei的身高是170.0