封装
封装是面向对象的三大特征之一,就是将类的状态信息隐藏在类内部。
封装的具体步骤: 修改属性的可见性来限制对属性的访问:为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的取值:在赋值方法中,加入对属
性的存取控制语句。
封装的好处: 隐藏类的实现细节;让使用者只能通过程序规定的方法来访问数据;可以方便地加入存取控制语句,限制不合理操作。
封装时会用到多个权限控制来修饰成员变量和方法,区别如下:
- private:成员变量和方法只能在其定义的类中被访问,具有类可见性。
- 默认:成员变量和方法只能被同一个包里的类访问,具有包可见性。
- protected:可以被同一个 包中的类访问,被同一个项目中不同包中的子类访问。
- public:可以被同一个项目在的所有类访问,具有项目可见性,这是最大的访问权限。
package 封装;
public class TestStudent {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu=new Student();
//age
stu.setAge(100);
System.out.println("年龄:"+stu.getAge());
//height
stu.setheight(100);
System.out.println("身高:"+stu.getheight()+"厘米");
//name
stu.setname("aa");
System.out.println("名字:"+stu.getname());
}
}
测试类
package 封装;
public class Student {
//修改属性的可见性来限制对属性的访问(一般限制为private)
private int age;
private double height;
private String name;
//get/set
//Age
public int getAge(){
return age;
}
//height
public double getheight(){
return height;
}
//name
public String getname(){
return name;
}
//age
public void setAge(int age){
if(age>0){
this.age=age;
}
else{
System.out.println("年龄必须大于0");
this.age=18;
}
}
//height
public void setheight(double height){
if(height>0){
this.height=height;
}
else{
System.out.println("身高不能小于0");
this.height=188;
}
}
public void setname(String name){
if(name=="a"){
this.name=name;
}
else{
System.out.println("名字不对");
this.name="a";
}
}
}
运行结果如下:
年龄:100
身高:100.0厘米
名字不对
名字:a