day8 Java学习(面向对象.多态&接口)

面向对象

 

 

 多态:

       概述:事物存在的多种形态。

 多态前提:

      *要有继承关系

      *要有方法重写

      *要有父类引用指向子类对象。 

  成员变量访问:

          编译看左边(父类),运行左边(父类)。

  成员方法访问:

         编译看左边(父类),运行右边(子类)。//动态绑定

 

  多态静态方法:

编译看左边(父类),运行看左边(父类)。  

 

  多态向上转型:父类引用指向子类。

    *必须先有向上转型才有向下转型。

        Father p =new son();  (向上转型)

        son  p1= (son) p;( 向下转型)

 多态的好处:

    *提高了代码的维护性(继承保证)

    *提高了代码的扩展性(由多态保证)

  多态的弊端:

     * 不能使用子类的特有属性和行为。

 

 面向对象(抽象类)

    抽象类的概述:

     *抽象就是看不懂的

     抽象类特点:

        1.抽象类和抽象方法必须要用abstract关键字修饰

                *abstract class 类名 { };

                * public abstract void eat();

         2.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口。

         3.抽象类如何实例化?

                 * 按照多态的方式 ,由具体的子类实例化。其实这也是多态的一种,抽象类多态。

          4.抽象的子类

                 *要么是抽象类

                 *要么重写抽象类中的所有抽象方法。

     抽象类的成员特点:

        1.成员变量:既可以是变量,也可以是常量。 

             *abstract不能修饰成员变量。

         2. 构造方法:有。

         3.成员方法:既可以是抽象的,也可以是非抽象的。 

         4.抽象类的成员方法特性:

             *抽象方法 (强制要求子类做的事情)

             *非抽象方法  (子类继承的事情,提高代码的复用性)。 

   面向对象( 接口)

     接口概述:

              * 冲狭义的角度讲就是指Java中的interface。

              * 冲广义的角度讲对外提供规则的都是接口。

      接口特点:

              * 接口用关键字Interface表示

                     *interface 接口名 { }

               * 类实现接口用implements表示

                      *class 类名 implements 接口名 { }

                * 接口不能实例化

                         *那么如何实例? (按照多态的方式来实现)

                  * 接口的子类

                        *可以是抽象类,但是意义不大

                        *可以是具体类。要重写接口中的所有抽象方法(推荐方案)。

 

                   

 

             

 

      

  

原文地址:https://www.cnblogs.com/feng0001/p/10884290.html