Java三大特性的第一个分水岭——封装性

2年前 (2022) 程序员胖胖胖虎阿
227 0 0


大家好,我是卷心菜,大二学生一枚,本篇主要讲解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三大特性的第一个分水岭——封装性

总结封装性: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());
    }
}

运行结果:
Java三大特性的第一个分水岭——封装性
从代码和运行结果可以看出,属性gender权限修饰符作用范围最大,在测试中,可以直接通过"对象.方法"来改变属性值,这样就不符合封装性的思想,破坏了封装性;其它的三个属性值的改变,都是通过setter()和getter()来修改的,确保了封装性思想的落实:隐藏该隐藏的。


通过将属性声明为私有的private,再提供共有的public方法setter()和getter()来实现对属性的操作。来实现以下的目的:

  • 隐藏类中不需要对外提供的实施细节
  • 用户只需要通过实现定制好的方法访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作
  • 便于修改,增强代码的可维护性

谢谢阅读,一起进步,嘻嘻~

版权声明:程序员胖胖胖虎阿 发表于 2022年9月14日 上午3:40。
转载请注明:Java三大特性的第一个分水岭——封装性 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...