zoukankan      html  css  js  c++  java
  • Java中的多态

    多态:

    一、概念:

    多态体现为父类引用变量可以指向子类对象。

    多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。

    在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

    定义与使用格式:

    父类类型  变量名 = new 子类类型();
    变量名.方法名();

    普通类多态定义的格式

    父类 变量名 = new 子类();
    如:    class Fu {}
        class Zi extends Fu {}
        //类的多态使用
    Fu f = new Zi();

    抽象类多态定义的格式

    抽象类 变量名 = new 抽象类子类();
    如:    abstract class Fu {
             public abstract void method();
             }
    class Zi extends Fu {
    public void method(){
                  System.out.println(“重写父类抽象方法”);
    }
    }
    //类的多态使用
    Fu fu= new Zi();

    接口多态定义的格式

    接口 变量名 = new 接口实现类();
    如: interface Fu {
                 public abstract void method();
    }
    class Zi implements Fu {
                 public void method(){
                  System.out.println(“重写接口抽象方法”);
    }
    }
    //接口的多态使用
    Fu fu = new Zi();

    多态的成员特点:

    多态成员变量:

    编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。

    运行时期:也是调用引用型变量所属的类中的成员变量。

    简单记:编译和运行都参考等号的左边。编译运行看左边

    多态成员方法:

    编译时期:参考引用变量所属的类,如果类中没有调用的方法,编译失败。

    运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。

    简而言之:编译看左边,运行看右边。

    多态-----转型

    instanceof 关键字

     用instanceof关键字来判断某个对象是否属于某种数据类型(若是根本没关系的话,直接编译失败;编译成功可能为父元素的另外一个子元素)

    boolean  b  = 对象  instanceof  数据类型;

    多态本身就是向上转型;

    向下转型:必须前提是多态

    子类类型 变量名 = (子类类型) 父类类型的变量;

    目的:调用子类独有的属性和方法;

    转型前:先if(关键字)判断

  • 相关阅读:
    DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布
    C# 与 .NET Framework 对应关系
    C# 基于Directshow.Net lib库 USB摄像头使用DirectShow.NET获取摄像头视频流
    Actor模型的状态(State)+行为(Behavior)+邮箱(Mailbox)
    c# 无法加载DLL:找不到指定的模块(异常来自HRESULT:0X8007007E)
    管道式编程(Pipeline Style programming)
    Word文档转Markdown插件(Windows)
    纯Java实现定时任务(转)
    Spring MVC使用Schedule实现定时任务
    Spring Boot使用Schedule实现定时任务
  • 原文地址:https://www.cnblogs.com/heitaitou/p/12814180.html
Copyright © 2011-2022 走看看