1.什么是封装
封装是面向对象程序的三大特性之一,面向对象程序的三大特性分别是封装,继承,多态
而封装简单来说就是套壳隐藏细节
打个比方:
在一些电脑厂商生产电脑时,仅对用户提供开关机键,键盘输入,显示屏和USB插口,而使用电脑的人不必关心电脑内部硬盘,CUP,芯片等核心组件,就可以通过键盘鼠标显示屏进行交互完成各种功能
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互
2.访问限定符
在java中封装主要由类和访问权限来实现,类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。
以上是java提供的4种访问限定的关键字
这四种关键字要怎么理解呢?
这里可以做个比喻
将类比作一个人,包比作一个家族
1.private:同一包中的同一类,也就相当于自己,自己的秘密只有自己知道,所以被private修饰的成员变量和方法只能本类中的成员方法可以调用
2.default:同一包中的不同类,也就相当于一个家族,被default修饰的成员方法和成员变量在同一个包中可以被其他类中的成员方法调用,也就相当于被default修饰后,成为了家族里面的秘密,外人是不知道的
3.protected:主要运用在继承里面,这里就不做过多介绍
4.public:他相当于一个人的外貌特征,谁都可以访问
注意:
1.当成员变量,成员方法或者类的前面什么访问限定符都不写时,编译器会默认为default
2.访问权限除了可以限定类中成员的可见性,也可以控制类的可见性
3.封装的步骤
1.使用private关键字对类里面的成员变量进行隐藏
2.写setter和getter方法对隐藏的成员变量进行访问
注意:1.private一般修饰成员变量
2.setter和getter方法可以通过idea自动给我们生成
3.可以在方法里面加一些条件语句进行限制
3.1使用idea生成Getter和Setter方法
3.2封装代码演示
class Student{
//private修饰类的成员变量
private String name;
private int age;
private String gender;
public String getName() {
return name;
}
//在类的方法里面添加条件语句,限制名字的长度
public void setName(String name) {
if(name.length()<6)
this.name = name;
}
public int getAge() {
return age;
}
//在类的方法里面添加条件语句,限制年龄的范围
public void setAge(int age) {
if(age>0&&age<30)
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public void show(){
System.out.println(this.name+"今年"+this.age+",性别:"+this.gender);
}
}
public class Test02 {
public static void main(String[] args) {
Student student=new Student();
student.setName("李狗蛋");
student.setAge(16);
student.setGender("男");
student.show();
}
}