Java封装(定义作用及示例详解)

Java封装(定义作用及示例详解)-mikechen

Java封装属于面向对象的三大特征之一,本篇我们重点详解Java封装的定义、优点、实现与示例。

Java封装定义

Java封装从字面上来理解就是包装的意思,是将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。

数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。

一句话总结:封装=私有化属性+公共调用属性的方法。

 

Java封装作用

使用封装有四大好处:

1、高内聚:封装细节,便于修改内部代码,提高可维护性;

2、低耦合:简化外部调用,便于调用者使用,便于扩展和协作;

3、安全性:提高代码的安全性,隐藏细节实现;

4、复用性:提高代码的复用性。

 

Java封装实现

Java是使用“访问控制符”来控制哪些细节需要封装,类的访问控制符只能是空或者 public,方法和属性的访问控制符有 4 个,分别是 public、 private、protected 和 friendly。

访问控制修饰符的权限,如下表所示:

Java封装(定义作用及示例详解)-mikechen

上图说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。

Java中的封装是使用访问修饰符private 、protected和public实现的。

 

Java封装示例

public class Cat {
 
    private String  name;
    private String type;
    private int age;
    public Cat(){
 

    }
    //定义有参构造,方便实例化对象时,初始化值
    public Cat(String name, String type, int age) {
 
        this.name = name;
        this.type = type;
        this.age=age;
    }

    public String getName() {
 
        return name;
    }

    public void setName(String name) {
 
        this.name = name;
    }
    //type(品种)属性只可以读取,不可以写入
    public String getType() {
 
        return type;
    }

    public int getAge() {
 
        return age;
    }

    public void setAge(int age) {
 
        if(age<0||age>20){
 
            System.out.println("猫的年龄输入有误,请检查后重新输入!!!!");
            return;
        }
        this.age = age;
    }

    public void showInfo(){
 
        System.out.println("猫的名字为: "+name+" 猫的品种为: "+type+" 猫的年龄为: "+age);
    }

}

public static void main(String[] args) {
 
        //猫的品种一经出生,就不能修改了,但是我这边还是可以通过对象名.属性名的方式去修改
        Cat cat=new Cat("叮当","狸花猫",8);
        System.out.println("一年前: ");
        cat.showInfo();
        cat.setName("小梦");
        System.out.println("获取猫的品种: "+cat.getType());
        cat.setAge(9);
        System.out.println("一年后: ");
        cat.showInfo();
    }

 

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法