• [Java入门笔记] 面向对象三大特征之:封装


    了解封装

    什么是封装?

    在Java的面向对象程序设计中,有三大基本特征:封装、继承和多态。首先我们先来看看封装:

    在Java的面对对象程序设计中,封装(Encapsulation)是指一种将函数功能实作细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随便访问。如果要访问类中的代码和数据,必须要通过严格的控制。

    为什么要使用封装?

    使用封装主要有以下好处:

    • 能够隐藏该类中一些功能的实现细节。让调用者通过事先实现好的方法访问类的功能和数据,同时也限制对类中数据的不合理访问。
    • 对数据进行检查,有利于保护对象信息的完整和合理性。
    • 便于对代码的修改和维护,提高代码的可维护性。

    如何使用封装?

    访问权限控制符

    Java中一共有四个访问权限控制符,用来对类和对象的数据进行封装:

    修饰符 类内部 同一个包 子类真 全局范围
    private      
    default    
    protected  
    public

    对于外部类,也可以使用修饰符,不过外部类只能使用public和默认两种修饰符。

    例子

    public class Person {
        
        //用private修饰符修饰,外部无法访问
        private String name;  //姓名
        private int age;      //年龄
        private String idNum;  //身份证号
        
        //得到该类对象的姓名
        public String getName() {
            return name;
        }
        
        //设置该类的对象的姓名,如果传入空值,则不赋值
        public void setName(String name) {
            if(name.length() == 0 || name == null){
                return;
            }
            this.name = name;
        }
        
        //得到年龄
        public int getAge() {
            return age;
        }
        
        //设置年龄,当传入的参数大于等于0时,才将参数设置给该对象
        public void setAge(int age) {
            if(age >= 0){
                this.age = age;
            }
        }
        
        //得到身份证号
        public String getIdNum() {
            return idNum;
        }
        
        //设置身份证号
        public void setIdNum(String idNum) {
            this.idNum = idNum;
        }
      
    }

    上面的例子中我们为该类中的属性增加了private修饰符,外部无法再直接访问和修改这些属性,如果有需要使用,我们则需要为其增加getXxx和setXxx方法访问这些事项,同时,我们也可以在这些方法中对这些属性的访问进行控制,比如姓名不能为空,年龄不能为负数等等。

    这样我们并可见对程序的完整性和合理性进行合理的控制,也能更好的增强代码的安全性,也使代码能够更好的管理与维护。

    public class Test {
        public static void main(String[] args) {
            Person p = new Person();
            p.name = "张三";  //错误,无法直接访问
            p.setName("张三");
            p.setAge(-5); 
            System.out.println(p.getAge());  //输出默认值0,尽管我们在上一行代码中传入一个数值,但是我们在setAge方法中做了控制,所以传入的负数并没有赋给p对象
        }
    
    }

    使用原则

    关于访问控制符的使用,我们使用应当尽量符合下面一些原则:

    • 类的大部分成员变量,都应该使用private修饰符,只有一些static、全局变量的Field,才考虑使用public修饰符。
    • 如果某个类主要用作其他类的父类,类中的大部分方法和属性希望被子类重写和使用,而又不想被外部直接调用,则应当使用protected修饰符。
    • 希望被暴露出来直接被外部使用的方法,应当使用public修饰符。
    • 一个方法的功能只有在类的内部被调用时,应当使用private修饰符。
  • 相关阅读:
    Android 音视频开发(六): MediaCodec API 详解
    Android 音视频开发(五):使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件
    Android 音视频开发(四):使用 Camera API 采集视频数据
    Android 音视频开发(三):使用 AudioTrack 播放PCM音频
    Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
    Android 音视频开发(一) : 通过三种方式绘制图片
    Android 使用View绘制文字(DrawText)技术总结
    Mac OS 中安装 autoconf 和 automake
    Android 自定义 View 绘制
    关于 Socket 设置 setSoTimeout 误用的说明
  • 原文地址:https://www.cnblogs.com/hopeblog/p/5065317.html
Copyright © 2020-2023  润新知