zoukankan      html  css  js  c++  java
  • Day6:面向对象------多态

    1、多态

    多态:
    某一事物的多种体现形态。
    重点是对象的多态性。
    
    
    class 动物
    {}
    
    
    class 猫 extends 动物
    {}
    
    //猫 x = new 猫();
    动物 x = new 猫();多态。
    
    多态在程序中的体现:父类或者接口的引用指向了自己的子类对象。
    
    多态的好处:提高了代码的扩展性,后期出现的功能,可以被之前的程序所执行。
    
    多态的弊端:虽然可以使用后期出现的代码,但是不能使用子类特有的功能。只能使用覆盖了父类的功能。
    
    多态的前提:必须要有关系(继承,实现),通常会有覆盖操作。

    向下转型前,必须对具体对象进行类型的判断。判断的关键字的 instanceof为了避免运行时出现ClassCastException

    (向下转型。什么时候用?当需要使用子类型的特有方法时。)

    多态的调用方式在子父类中的特殊体现。

    
    

    1,成员变量。
    多态调用的时,编译和运行都参考引用型变量所属的类中的成员变量。
    编译和运行看等号的左边。

    2,成员函数。
    多态调用时,编译参考的是引用型变量所属的类,运行时参考的是对象所属类。
    编译看左边,运行看右边。因为函数有一个覆盖的特性。

    
    

    3,静态函数。
    多态调用时,编译和运行都参考引用型变量所属的类中的静态函数。
    编译和运行看等号的左边。

    
    


    成员变量和静态函数,看左边。
    只有非静态函数,编译看左边,运行看右边;

     

    2、内部类

    内部类:定义在类中的类,称为内部类。
    
    好处是可以直接访问外部类中的成员。
    
    
    外部类要访问内部类需要创建内部类的对象。
    
    内部类直接访问外部类的原理:因为内部类持有了外部类的引用。外部类名.this
    /*内部类可以定义在局部*/
    void method()
        {
            final int x = 5;//内部类在局部时,只能访问被final修饰的局部常量。非final的不行,因为生命周期不同
            class Inner extends Demo
            {
                void show()
                {
                    System.out.println("x="+x);
                    System.out.println(num);
                }
            }
            
            d = new Inner();
        }
    匿名内部类:就是内部类的简化格式。
    内部类必须继承一个类或者实现接口,这种情况下的内部类可以简化成匿名内部类
    
    格式:new 父类或者接口(){定义子类的内容}
    其实匿名内部类就是一个子类对象。
  • 相关阅读:
    spring mvc poi excel
    select onchange事件的使用
    eclipse下svn的分支与合并指南
    jquery_final
    ListView
    资源的使用
    Notification
    单选
    复选框
    调试
  • 原文地址:https://www.cnblogs.com/vijay/p/3502940.html
Copyright © 2011-2022 走看看