一 封装 – 面向对象三大特征之一
1 封装
Java中提出将某些指定的代码”保护“起来,不被外人轻易访问
2 封装的是什么
1 成员字段:全部私有,即被private修饰,防止其他外部人随意访问,如果需要访问,则必须授权
2 成员方法:将功能代码定指定的方法中,从而简化主函数的代码编写,提高执行效率;在主函数中只需要做两步操作
3 使用封装的好处
1 提高的代码的安全性
2 简化主函数代码的编写
3 降低类与类之间的耦合度(解耦合)
4 值传递
根据不同的场景给类中指定的成员字段进行赋值
1 无论是否封装 --直接赋值;在定义成员字段的时候,就直接赋值;好处直接,适用于所有场景;后期维护起来麻烦,实际开发中多用于常量的操作
public class Test {
private String name="小明";
private int num=1;
private char ch='A';
}
2 封装前:可以通过对象.调用属性赋值,这种方式受访问修饰符的影响较大,而且不符合面向对象封装的思想,基本不用
// 定义
public class Animal {
// 姓名
public String name="大黄";
// 年龄
public int age=12;
public Animal(){};
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
}
// 调用
public class Test {
public static void main(String[] args) {
Animal dog=new Animal();
dog.name="大白";
}
}
3 封装之后通过构造器赋值 – (最多使用)
public class Animal {
// 姓名
public String name;
// 年龄
public int age;
public Animal(){};
// 通过有参构造器进行赋值
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
}
二 构造器的梳理
1 作用 – 实例化对象 (最主要作用);进行值传递
2 特点 – 构造器方法名必须与类名一致;构造器方法没有返回值部分
3 注意事项
① 当类中没有明确定义构造器的时候,jvm虚拟机会为当前类配置一个默认的无参构造器,供用户使用
② 当类中明确定义了构造器,jvm虚拟机不会提供任何的构造器
③ 开发过程中,建议定义类的时候,无参有参构造器都要编写以满足用户的不同需求
④ 展构造器方法能够被重载
public class Animal {
// 姓名
public String name;
// 年龄
public int age;
// 身高
public int high;
public Animal(){};
// 通过有参构造器进行赋值
public Animal(String name, int age,int high) {
this.name = name;
this.age = age;
this.high = high;
}
// 重载构造方法
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
}
⑤ 使用get/set 方法操作,这是指定定义格式的方法,完成对私有属性的赋值
public class Animal {
// 姓名
public String name;
// 年龄
public int age;
// 身高
public int high;
public Animal(){};
// 通过有参构造器进行赋值
public Animal(String name, int age,int high) {
this.name = name;
this.age = age;
this.high = high;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHigh() {
return high;
}
public void setHigh(int high) {
this.high = high;
}
// 生成tostring方法
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", age=" + age +
", high=" + high +
'}';
}
}
三 JavaBean规范
1 含义:符合定义规则(或者规范)的java类的统称;编写代码时看到bean就代表需要配置java类
2 在JavaBean中能够定义什么内容:
属性(Property)、字段(Field)、方法(Method)、事件(Event)
3 如何区分属性和字段
①字段(Field):Java类中被访问权限修饰符修饰的变量-- 一定是成员变量
②属性(Property):java中指定的字段的get、set方法,去掉get、set之后,单词首字母小写,与成员字段名一致称之为属性
当成员变量数据类型为boolean时,其对应的get方法会变成:isXxx()(有些版本)
4 JavaBean定义规范
①定义的java类必须用public访问权限修饰符修饰
②定义的成员字段必须用private访问权限修饰符修饰
③必须提供公有的无参构造器
④必须提供所有字段的公有的get/set方法