java面向对象基本特征 — 封装
封装
封装 就是对一些属性、方法通过一个类进行封装,把要进行的一些操作通过封装的形式放在一个方法中,这个过程就叫做封装;通俗的讲:封装就相当于一个书包(这个书包就叫做书包类),书包里面有很多笔和书(也就是你需要进行的一些操作),然后我们通过文具盒把笔放在一个文具盒里面,其余的书放在其他空间里面,这个的方式就类似于java里面的封装。
访问修饰符
在封装的基础上,我们需要进行对你的具体内容进行限定(限制)。
访问修饰符就类似于手机里面加密的应用和不加密的应用,它们的权限不一样,加密的就是不能随便打开的,在java里面就可以通过添加访问修饰符来对他们进行修饰。
四个访问修饰符:
Public: 公共的访问修饰符;
**Protected:**受保护的访问修饰符,它比public弱一点;
**Default(默认)**默认的访问修饰符,它又比protected弱一点;
Private:私有的访问修饰符,访问的权限最低。
以上四个访问修饰符就可以对 类,属性,方法进行不同的修饰。
在修饰类的时候,Protected,Private只能修饰内部类;
通过上面对表格的理解,下面我用纯代码演示给大家看:
public
public 是公有的,只要在同一个项目中都能拿到。
Protected(受保护的)
受保护的类它只能修饰你的内部类;但它依然可以修饰你的属性和方法,
它在不同包下的不同类无法取到它的数据,如果在同包下的类存在继承关系,那么它的子类就可以取到;
//这里是受保护的访问修饰符
class Encapsulation {
// 修饰属性
protected int id;
protected String name;
// 修饰方法
void show(){
System.out.println("这里的是受保护类,这是我们的两个属性:"+this.name+"\t"+this.id);
show();
}
}
上面这张图忘加了public 来修饰,但是它的实现效果是一样的,并不冲突。
public class Test {
public static void main(String[] args) {
Encapsulation encapsulation = new Encapsulation();
encapsulation.id = 1;
encapsulation.name = "玛卡巴卡";
encapsulation.show();
}
}
实现效果:
Default(默认)
//这里是默认的属性和方法
class Encapsulation {
// 修饰属性
int id;
String name;
// 修饰方法
void show(){
System.out.println("这里的是默认类,这是我们的两个属性:"+this.name+"\t"+this.id);
}
}
public class Test {
public static void main(String[] args) {
Encapsulation encapsulation = new Encapsulation();
encapsulation.id = 001;
encapsulation.name = "玛卡巴卡";
}
}
这里使用的是默认属性来修饰它的类和方法:
下面是在同一个包下的不同类(测试类)里面,可以拿到它的属性和方法:
Private(私有的)
修饰的类必须是内部类;不可以直接写在普通类上,只要是使用了私有化属性的,就只能在当前类里面使用;
那么在这里就说一下类里面被私有化属性,怎么来调用它们呢?
请看一下操作:
Get 和 Set方法
在对私有化属性操作时,我们需要在当前类里面生成他们的Get和Set方法,
get方法
用来读取对象的值,并返回该值。通常都是以get开头,后面的属性值会使用驼峰命名法get+属性名(首字母大写),例如:getName()。
public class Encapsulation {
// 私有化属性
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
这里的 Encapsulation类里面的 id和name 都是私有化的,在此类的外部是无法访问的,所以就可以生成它们的get方法 来对其进行访问,get是读取属性的值。
set方法
是用来设置属性的值;同调用set跟上后面的属性值(首字母大写)它会接收你需要对属性添加的参数,也就是你需要对这个属性设置的值。
public class Encapsulation {
// 私有化属性
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
这里的 Encapsulation类里面的 id和name 都是私有化的,在此类的外部是无法访问的,所以就可以生成它们的Set方法 来对其进行属性值的设置,Set是设置属性的值。
下面是在调用属性值的操作:
public static void main(String[] args) {
Encapsulation encapsulation = new Encapsulation();
encapsulation.setId(2);
encapsulation.setName("xiaoxiao");
System.out.println(encapsulation.getId()+"\t"+encapsulation.getName());
}
实现效果:
因为 get和set 的方法都是Public ,那么我们就可以用对象调到它的公共方法,再用公共方法去操作私有化属性值,我们就可以通过封装方法的方式对其进行操作,这就是它的过程啦。
get和set方法
好处包括以下几点:
get和set可以私有化对象的属性值,在使用封装方式对其操作,提高代码的封装性,防止其他代码直接访问它的属性值;
在需要对其进行添加或修改等操作时,只需要重新生成它的get和set方法,不需要操作其他代码。
今天的分享就到这里啦,小江会一直与大家一起努力,文章中如有不足之处,还请指出哦,感谢支持,持续更新中 ……