面向对象的特性一 : 封装与隐藏
为什么引入封装性?
- 程序设计追求“高内聚,低耦合”
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
- 低耦合:仅对外暴露少量的方法用于使用
- 隐藏对象内部的复杂性,之对外公开简单的接口。便于外界调用,从而提高系统的可扩展性,可维护性。通俗的说,把该隐藏的隐藏起来,把该暴露的暴露出来。这就是封装性的设计思想。
问题引入
- 将age属性私有化:private int age 避免直接调用属性进行赋值修改。通过setAge()方法来修改age
封装性思想体现:public private default protected
- 将类的属性私有化,提供公共的get、set方法来获取或设置属性的值
- 不对外暴露的私有方法
- 单例模式(将构造器私有化)
- 如果不希望类在包外被调用,可以将类设置为缺省的。
Java规定的四种权限修饰符
-
private < default < protected < public
-
具体修饰范围:
-
四种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
修饰类的话,只能使用:缺省、public
构造器(或构造方法) Constructor
-
构造器的作用:
- 创建对象
- 初始化对象的信息
-
使用说明:
- 没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
- 定义构造器的格式:权限修饰符 类名(形参列表){ }
- 一个类中定义的多个构造器,彼此构成重载
- 一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器了
- 一个类中,至少会有一个构造器
-
example:
public Person(){ } public Person(String n){ name = n } public Person(String n,int m){ name =n; age = m; }
This
- 可以调用的结构:属性、方法;构造器
- this调用属性、方法:
- this理解为:当前对象 或 当前正在创建的对象
- this调用构造器:
总结:属性赋值的先后顺序
-
默认初始化值
-
显式初始化
-
构造器初始化
-
通过 对象.方法 或 对象.属性 的方式,赋值
以上: 1 --> 2 --> 3 --> 4