9. JavaSE-继承

面向对象的三个特性:

    1. 封装(以对象的形式来体现)

    2. 继承

    3. 多态


继承的好处:

1. 提高代码的复用性

2. 让类与类之间产生了关系,给 面向对象 的第三个特征多态提供前提。

 

Java中仅支持单继承,不支持多继承,但对C++中的多继承机制进行改良。

    1. 单继承:一个子类仅有一个父类

    2. 多继承:一个子类可以有多个直接父类

       1)不直接支持,因为多个父类中有相同成员,会产生调用的不确定性

       2)在java中是通过“多实现”的方式来体现Java支持多重继承。

 

当使用继承体系时;

1. 查看该体系中的顶层类,了解该体系的基本功能

2. 创建体系中的最子类对象,完成功能的使用

 

什么时候定义继承?

1. 当类与类之间存在所属关系的时候,就定义继承(定义继承的时候,实际上是向上抽取分析的逆过程)

2. 在子父类中,成员的特点体现:

1). 成员变量

      当本类的成员和局部变量同名时用this区分

      当子父类中的成员变量同名用super区分父类

      This和super用法很相似

            This:代表一个本类对象的引用

            Super:并不代表父类对象的引用,而是代表一个父类的空间

2). 成员函数

     当子父类中出现成员函数一模一样的情况,会运行子类的函数

      这种现象,称为覆盖操作,这是函数在子父类中的特性

      函数两个特性:重载 和 覆盖

        重载:在同一个类中

        覆盖:在子父类中,也称为重写

      覆盖注意事项:

        子类覆盖父类方法时,子类权限必须要大于或者等于父类的权限。

         什么时候使用覆盖操作?

               当对一个类进行子类的扩展时,子类需要保留父类的功能声明;但是要定义子类中

               该功能的特有内容时,就使用覆盖操作完成。

            class Phone

            {

                public void show()

                {

                    System.out.println("number");

                }

                public void call()

                {

                    System.out.println("call");

                }

            }

            class NewPhone extends Phone

            {

                public void show(String name)

                {

                    System.out.println(name);

                    super.show();

                }

            }

            class  PhoneDemo

            {

                public static void main(String[] args) 

                {        

                    NewPhone p = new NewPhone();

                    p.show("keyman");

                    p.call();

                    //System.out.println("Hello World!");

                }

            }

3). 构造函数

        在子类构造对象时,发现,访问子类构造函数时,父类也运行了。因为在子类的构造函

        数中第一行有一个默认的隐式语句。Super();

           对于构造函数,不可能出现覆盖的情况,因为类名不可能重复,而构造函数的名称与类名

           相同,因此构造函数不可能出现覆盖的情况。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章