Java学习笔记(三) o(* ̄︶ ̄*)o

10 阅读2分钟

十一、面向对象-进阶

1. 面向对象三大特征(一)-封装

1.1 概念

随着代码量的提升,类会越来越多,面向对象的开发原则我们需要遵循 高内聚,低耦合

高内聚:一个模块内部功能单一化,"自己的事情自己做"
低耦合:各个模块之间关系简单,"少依赖别人"
  • 定义:所谓 封装,就是把客观事物封装成抽象概念的类,并且类把自己的数据和方法只向可信的类或者对象开放,向没必要开放的类或者对象隐藏;通俗来讲,也就是将数据和方法整合为类,然后把该隐藏的隐藏起来,该暴露的暴露出来,这就是封装性的设计思想
  • 作用:保护数据安全性,避免外部随意修改,同时降低代码耦合度。
  • 实现:通过访问修饰符(public、protect、缺省、private)控制访问权限。

1.2 如何实现封装

实现封装就是控制类或成员的可见性范围。这就需要依赖权限修饰符(public、protect、缺省、private)

修饰符本类内部本包内其他包的子类其他包非子类
private×××
缺省××
protected×
public

1.3 封装的体现

在实际开发中,我们通常会 私有化类的成员变量,也就是 成员变量使用private修饰,再为其提供 公共的get和set方法,对外暴露获取和修改属性的功能,而这正是封装思想的体现

这样设计的好处在于:

  • 只能通过预设的方法来访问数据,从而可以在方法中添加其他限制逻辑,例如年龄字段赋值限制不能小于0等
  • 便于维护,访问方式不变的情况下,可以实现无感知维护。例如 java8->java9 将 String 从 char[] 改为了 byte[],而对外的方法不变,我们使用者根本感觉不到它内部的修改

代码示例:

public class Person {
    // 私有化成员变量
    private String name;
    private int age;
    
    // 通过公共方法实现 赋值和获取
    public void setName(String n) {
        name = n;
    }
    public String getName() {
        return name;
    }
    public void setAge(int a) {
        age = a;
    }
    public int getAge() {
        return age;
    }
}

2. 面向对象三大特征(二)-继承

3. 面向对象三大特征(三)-多态