javaSE_day08_继承

2018-05-21  本文已影响0人  智慧之门

继承

  根据 已有类 派生出 新类 的技术。

优势

  1.代码重用

  2.便于维护(高耦合)

注意: java类 单一继承:一个 父类 可以有多个 子类,但是子类 只能 有一个 父类。

继承父类:子类 继承 父类中的 ‘所有’ 成员 ,就像自己类中定义的一样使用。

子类不能继承父类中的

  1.父类中 private修饰的成员;

  2.子类 和 父类 不在同一程序包下 ,使用默认访问修饰符的成员;

  3.构造器。

--------------------------------------

继承设计原则

里氏替换原则(LSP):在一个软件系统中,子类对象可以替换所有使用的父类对象,且程序行为没有变化。

--------------------------------------

重载: 通常一个类,方法名相同,参数列表不同,返回值无关

方法重写

  子类中,方法名,参数,返回值类型与父类中的 一样。

注意

  1.必须 子类 ,

  2.实例成员方法,

  3.方法名必须一样

  4.参数 一样 或  父类 擦除后 和子类相同;

  5.返回值 类型和父类相同 或 子类 可以是 父类 的子类型(引用)

  6.子类方法的访问修饰符 不能比 父类更严格(低)

  7.异常,子类 不能 比父类的异常范围更大。

场合

  1.子类 和 父类中 的 方法的功能不同;

  2.子类 修改了 父类中的功能。

父类 手机 {

  来电显示(){

      电话号码

  }

}

子类 手机{

  来电显示(){

      电话号码

      人名

      地址

      照片

    }

}

------------------------------------------------------

super

  表示父类的范围,可以调用 父类的成员(成员变量,方法)

  作用

    1.区分 子类 和 父类 同名的成员;

    2.调用父类构造器

      super();

      位置:子类构造器中;

            子类构造器的第一行代码处

注意

  子类 构造器 中 没有显示 调用父类构造 或 本类构造 , 那么 系统 会 自动分配一个 super()调用父类的 无参构造。

特殊

  父类中 没有无参构造器 ,只有带参构造器 ,

      解决办法: 1)在父类中定义一个无参构造器;2) 子类构造器 中 显示调用父类带参构造器。

继承的传递:子类 可以继承 直接父类的 成员,也可以继承 间接父类的成员。

-------------------------------------------------------------------------------------------------------------------------------------

Object:所有类的基类

  finalize()  垃圾回收 之前调用

强制垃圾回收:System.gc();

  toString(): 对象的字符串描述信息

  注意: 在使用print() 或 pintln()输出对象名时,会 自动调用toString();

  equals() : 比较是否 为同一对象,同一地址

-----------------------------------------------

final修饰符

  1.  : 不能被 子类 继承;

    (1)为了类的安全性 ,不允许子类修改。

    (2) 类之间的方法有复杂的调用关系。

    (3) 此类是最终版本的类,不想再扩展了。

  2.方法:不能被 子类 重写;

  不希望子类更改 ,所有子类 使用的是父类中的同一版本的方法。

  3.变量:值不能更改。常量

  值不能修改。

  常量的好处

    1.安全性。不允许随意更改值。

    2.可维护性。一个常量值更改了,所有应用的地方就都修改了。

    3.增强可读性。

-------------------------------------------------------------

什么情况会派生新类

1.子类 增加属性.

2.子类 增加了方法。

----------------------------------------------------------

设计类 的继承关系注意

  1. 不要超过3层。

  2. 可以被子类继承的类:

    (1)写详细的文档说明。

    (2)尽量封装。private

             对所有用户都开放 public

             只对子类开放  protected

             对所有用户都开放,又不想被 子类更改 final

      手机{

        private 容量;

        protected set(){}

        public get(){}//

      }

-----------------------------------------------------

继承的优点

1.代码重用;

2.便于维护。

继承的缺点

1.高耦合。

2.破坏封装。

------------------------------------------------------

组合

  整体 和 局部;

  体现方式:成员变量

上一篇下一篇

猜你喜欢

热点阅读