面向对象是一种思想,面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;
举例:
我去奶茶店买一杯,我需要找到一家奶茶店,并向店员提出我的需求。在这里我只需要告诉店员我们要买什么奶茶就好了,不需要知道店员制作奶茶的过程
其中封装是面向对象的一大特征
1.java的封装性即是信息隐藏,把对象的属性和行为结合成一个相同的独立单体,并尽可能地隐藏对象的内部细节。
例如:店员的姓名,年龄,性别等属性,和做什么种类的奶茶等行为。结合到一起就能代表店员这一类人。并且可以把奶茶的制作方法这些内容用private关键字隐藏起来。
public class employee {
public void create(){
System.out.println("这是一杯烧仙草");
}
}
我们调用对象的方法,只知道它给我做了一杯奶茶,但是如何实现我们是不知道的
2.提高了代码的安全性
例如:如果不对数据进行分装,对象可以随意对属性赋值
public class employee {
public String name ;
public int age ;
}
我们可以直接通过对象来对属性赋值,当我们输入一个age为-23时的数据时,肯定是不符合要求的。
为了保证代码安全,我们需要把成员变量设置为私有成员变量,提供setter和getter方法。对象想要获取属性,只能通过我们提供的公共方法,在方法里我可以判断你传入的值是否复合要求
public class employee {
private String name ;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age>=18&&age<45){
this.age = age;
}else {
System.out.println("年龄有错");
}
}
}
3.高内聚,低耦合
我们发现封装是对属性和方法的封装,这里并不涉及到其他的对象,高度内聚
只是暴露一部分的方法在外面,低耦合
4.提高了代码的复用性
封装完了之后,以后当我们需要再用到这些方法的时候只需要创建对象来调用即可。做到了一劳永逸
成员属性和成员变量的区别
Java类的成员属性和成员变量有所区别,成员属性是类所表述事物的共同特征,成员属性不能被外部直接访问和修改,必须通过类提供的get和set方法访问和修改成员属性。成员变量一般用于类内部存储临时数据使用,不需要提供get和set方法。