上一篇博客:面向对象、类与对象
目录
- 封装
- 概述
- 封装的步骤
- 封装的操作
- 封装优化
- 标准代码—JavaBean
开始
一、封装概述
面向对象的语言是对客观世界的模拟,客观世界成员变量都是隐藏在对象内部的,外界无法直接操作和修改
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。
要访问该类的数据,必须通过指定的方式
适当的封装可以让代码更容易理解和维护,也加强了代码的安全性
二、 封装的步骤
- 使用
private
关键字来修饰成员变量 - 对需要访问的成员变量,提供对应一对
getXxx
方法、setXxx
方法
三、封装的操作
- private的含义
- private是一个权限修饰符,代表最小权限
- 可以修饰成员变量和成员方法
- 被private修饰后的成员变量和成员方法,只能在本类中才能访问
- 使用格式
private 数据类型 变量名;
- 使用举栗
package DemoExercise;
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
package DemoExercise;
public class TextStudent {
public static void main(String[] args) {
Student stu = new Student();
//System.out.println(stu.name);
//System.out.println(stu.age);
}
}
四、封装优化
this.成员变量
- 形参变量可以和成员变量重名,为了区分形参变量名与成员变量名,需要用
this.
成员变量名 -
this
代表的所在类当前对象的引用,就是当前这个对象,方法被哪个对象调用,this
就代表那个对象
- 构造方法
- 当一个对象被创建时,构造方法用来初始化该对象,可以传参给对象的成员变量赋值
- 其实Java自动在类中提供一个无参数、空代码的构造方法,一旦你重现定义,Java提供的就会失效
- 定义格式
修饰符 构造方法名(参数列表){
//方法体;
}
//构造名字必须与类名相同
//它没有返回值,不用写返回值类型,void都不用写
- 举栗
package DemoExercise;
public class TextStudent {
public static void main(String[] args) {
Student stu = new Student();
//System.out.println(stu.name);
//System.out.println(stu.age);
System.out.println(stu.getAge());
//set、get后面的单词首字母大写
System.out.println(stu.getName());
stu.setAge(18);
stu.setName("小司");
System.out.println(stu.getAge());
//set、get后面的单词首字母大写
System.out.println(stu.getName());
System.out.println("==================");
//创建第一个对象
Student stu1 = new Student();
System.out.println(stu1.getName());
System.out.println(stu1.getAge());
//创建第二个对象
Student stu2 = new Student("小超",19);
System.out.println(stu2.getName());
System.out.println(stu2.getAge());
}
}
- 注
- 如果你不提供构造方法,系统会给出无参数构造方法。
- 如果你提供了构造方法,系统将不再提供无参数构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
五、标准代码—JavaBean
-
JavaBean
是Java语言编写类的一种规范。(咖啡豆 O(∩_∩)O哈哈~)
符合JavaBean
的类,要求必须是具体的和公共的,并且具有无参数的构造方法,提供set、get
方法
public class ClassName{
//成员变量
//构造方法
//无参构造方法【必须】
//有参构造方法【建议】
//成员方法
//getXxx()
//setXxx()
}
参考:B站黑马