封装从何而来?
众所周知,JAVA是面向对象的一门语言,那么面向对象有三个重要的特点:封装性、继承性和多态性。
那么如何实现封装呢?这就不得不提一个关键字private了,封装是面向对象里最复杂的概念,使用private关键字实现的封装处理只是封装的第一步
为什么要封装?
我们先来理解一下封装的概念,其实就是包装,不被外部所看到或者修改,对象不能直接操作属性,有些情况下,我们并不想被外部访问我们的一些属性,这时候我们就可以把这个属性设置为私有,给属性前面加上private,外部就很难直接访问私有属性了。
例如:
private String name;
private int age;
这是将上面姓名和年龄这两个属性设置为私有属性,这样外部就很难直接访问或者修改了!
如何访问?
上面提到我们设置私有属性是不想被外部直接访问或者修改,那如果我们只想被访问但不想被修改又该如何呢?这时候我们就必须提供以下两种方法:
setter方法和getter方法
我们先来看看这两个方法的功能:
setter方法:主要用于进行属性内容的设置与修改
getter方法:主要用于属性内容的取得
当我们想要修改私有属性的内容,就可以通过外部调用setter方法传参进行修改设置
而getter方法只允许访问,不允许修改。
!!!!!注意!!!!!getter方法是没有参数的
举个例子,看一段代码:
public class Person {
private String name;//私有属性
private int age;//私有属性
public void setName(String name){//可以通过外部传参修改姓名
this.name=name;
}
public int getAge(){//年龄只能访问
return age;
}
public void getPersonInfo(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
public class Test{
public static void main(String[] args){
Person person=new Person();//实例化一个Person对象
person.setName("张三");//设置姓名
person.getAge();//获取年龄
person.getPersonInfo();
}
}
上面这一段代码很清楚的解释了setter方法和getter方法,可以看到我们一开始对两个属性都未设置值,姓名属性痛setter方法传参进去的,而年龄只是获取了,所以应该是默认值0;运行结果如下:
如果我们一开始给年龄个初值再来看看结果,将上面属性那里改为如下:
扫描二维码关注公众号,回复:
4126751 查看本文章
private String name;//私有属性
private int age=18;//私有属性
此时结果便是如下:
这就更加验证了我们的getter方法只是单纯的获取属性,并不能改变。