简言:封装是一个非常广泛的概念,小到对一个属性,一个变量的封装,大到一个项目,一个框架的封装。但是我们还需要学习Java中的三个基本特性就是封装,继承,多态,我们可以看到封装就是Java中的三大特性之一,这个特性是我们必须要重点掌握的。
比如:我们的电脑机盒就是一个十分简单的封装。
public class Ecap1 { public int age; public String name; public double height;
}
这里写了一个类,这类里面有age,name,height属性,再继续观察下面的实现类。
public class test { public static void main(String[] args) { Ecap1 ecap1 = new Ecap1(); ecap1.age = -10; ecap1.height = -1.88; ecap1.name = "浩林"; System.out.println("age:"+ecap1.age); System.out.println("name:"+ecap1.name); System.out.println("height:"+ecap1.height); } }
我们可以看见我们age和height赋值的时候,age和height是不可能是负数的,这里我们就提出来封装的概念。
解决方法
package cv.mbzreview.encapsulation; public class Ecap1 { private int age; private String name; private double height; public int getAge() { return age; } public void setAge(int age) { if(age<0){ System.out.println("输入的age的格式错误,请重新输入:"); this.age = age; }else { this.age = age;} } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getHeight() { return height; } public void setHeight(double height) { if(height<1.70){ System.out.println("您的年龄不符合要求,谢谢!"); this.height = height; }else { this.height = height;} } }
这里我们用到了settter,getter访问器,我们可以给属性值做一定的封装如上面代码所示。
同时我们把属性值改为了private访问修饰符。这里的访问修饰符只能被本类使用。
我们可以看见我们的实现类里面是不能调用private的访问属性的,所以这里的setter和getter访问器就起到非常大的作用。
我们对属性的封装在这里就起到了他的关键作用。