面向对象之封装、继承与多态

一、封装性   1、为什么要引入封装

高内聚 :类的内部数据操作细节自己完成,不允许外部干涉

低耦合 :仅对外暴露少量的方法用于使用

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想

  2、封装性的体现

① 私有化(private)类的属性xxx,同时提供公共的(public)设置(setXxx())和获取(getXxx())的方法

     

面向对象之封装、继承与多态


② 不对外暴露私有的方法,我们可以设置为private

③ 如果不希望类在包外被调用,可以将类设置为缺省的

④ 单例模式(将构造器私有化):饿汉模式与懒汉模式

  3、四种权限修饰符:封装性的体现,需要权限修饰符来配合

从大到小:private < 缺省  < protected < public

权限修饰符可修饰的结构:①  4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类;② 只能使用缺省或者public来修饰类

修饰范围

     

面向对象之封装、继承与多态

 

  总结封装性:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小

二、继承性   1、为什么有继承

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可

  2、继承的优点

① 减少了代码的冗余,提高了复用性

② 具有更好的扩展性,继承的出现让类与类之间产生了关系,提供了多态的前提

③ 继承的出现,更有利于功能的扩展

注:不能为了继承而去继承,不要仅为了获取其他类中某个功能而去继承

  3、继承的格式:class A extends B{}

A:子类、派生类、subclass

B:父类、超类、基类、superclass。子类直接继承的父类,称为:直接父类;间接继承的父类称为:间接父类

  4、继承的规则

一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法

子类不能直接访问父类中私有的(private)的成员变量和方法

      

面向对象之封装、继承与多态

父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已

父类私有属性,可以通过get、set方法,子类间接调用

        

面向对象之封装、继承与多态

 

父类私有方法,子类可以通过其他公共方法间接调用

         

面向对象之封装、继承与多态

 

  5、继承性说明

① 子类和父类是相对的概念,父类又继承自己的父类,所有的类直接或间接的继承于java.lang.Object类

② 子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展

③ 一个父类可以有多个子类,但子类只能声明一个父类:Java类的单继承性

④ 如果一个类没有显式继承另外一个类的话,则其父类为:java.lang.Object类(根基类)

⑤ 任何一个类在继承java.lang.Object类之后,就获取了Object类中声明的属性和方法

⑥ Java中,继承是对父类的扩展,而不是父类的子集

  6、子类对象实例化过程

从结果上来看:(继承性)

子类继承父类以后,就获取了父类中声明的属性或方法

创建子类的对象,在堆空间中,就会加载所有父类中声明的属性

从过程上来看:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzzfp.html