大家好,我是卷心菜,大二学生一枚,本篇主要讲解Java面向对象的三大特征之一:封装性。如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。
文章目录
- 一、设计思想
- 二、权限修饰符
- 三、作用范围
- 四、使用细节
- 五、代码举例
一、设计思想
封装性的思想
:以类为载体,将类的属性、行为(可以理解为Java中的方法)封装起来,对使用者隐藏其具体实现细节,只对外公开简单的接口。大白话就是说,该隐藏的隐藏,该暴露的暴露。封装性的目的
:便于外界调用,避免外部操作对类内部数据的影响,从而提高系统的可扩展性、可维护性。
二、权限修饰符
Java中有四种权限修饰符,作用范围从小到大依次是:
- private
- 缺省(就是什么都不写)
- protected
- public
用代码体现就是:
public class One {
private int age;
String name;
protected String major;
public char gender = '男';
}
三、作用范围
刚刚讲过了,这四种权限修饰符有不同的作用范围,那么它们的作用范围到底是什么呢?
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
private | YES | |||
缺省 | YES | YES | ||
protected | YES | YES | YES | |
public | YES | YES | YES | YES |
四、使用细节
4种权限可以用来修饰类及类的内部结构:
属性、方法、构造器、内部类
注意:修饰类的话,只能使用:缺省、public,不然就会出现编译型异常
总结封装性:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。
五、代码举例
编写一个类,有四个成员变量,其中一个权限修饰符为public,其余都是private,都有对应的getter()和setter():
public class One {
private int age = 20;
private String name = "cabbage";
private String major = "计算机科学与技术";
public char gender = '男';
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
}
最后写一个测试类:
public class TestDemo {
public static void main(String[] args) {
One one = new One();
one.gender = '女';
one.setAge(21);
one.setName("hello");
one.setMajor("大数据");
System.out.println(one.gender);
System.out.println(one.getAge());
System.out.println(one.getName());
System.out.println(one.getMajor());
}
}
运行结果:
从代码和运行结果可以看出,属性gender权限修饰符作用范围最大,在测试中,可以直接通过"对象.方法"
来改变属性值,这样就不符合封装性的思想,破坏了封装性;其它的三个属性值的改变,都是通过setter()和getter()来修改的,确保了封装性思想的落实:隐藏该隐藏的。
通过将属性声明为私有的private,再提供共有的public方法setter()和getter()来实现对属性的操作。来实现以下的目的:
- 隐藏类中不需要对外提供的实施细节
- 用户只需要通过实现定制好的方法访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作
- 便于修改,增强代码的可维护性
谢谢阅读,一起进步,嘻嘻~
相关文章
暂无评论...