zoukankan      html  css  js  c++  java
  • 编译时类型 和运行时类型的 区别(1)

    class T{
    void f(int x){
    System.out.println("int in T:" +x);
    }
    void f(double x){
    System.out.println("double in T:"+x);
    }
    void f(Object x){
    System.out.println("Object in T:" +x);
    }
    }

    class S extends T{
    void f(int x){  //子类覆盖基类方法
    System.out.println("int in S:" +x);
    }
    void f(float x){
    System.out.println("float in s:" +x);
    }
    }


    public class quest3{
    public static void main(String[] args) {
    T t=new S();
    // t编译时类型 调用 T的方法 并判断子类是否有覆盖

    t.f(20); // 基类方法被子类覆盖 输出子类 int in s

    t.f(20L); //基类方法
    t.f(3.5f); //基类方法
    t.f(3.5); //基类方法
    t.f("abcdef"); //基类方法
    }
    }

    输出结果:

    int in S:20
    double in T:20.0
    double in T:3.5
    double in T:3.5
    Object in T:abcdef

  • 相关阅读:
    网络协议 19
    网络协议 18
    网络协议 17
    网络协议 16
    网络协议 15
    .NET基础知识(01)-值类型与引用类型
    .NET基础知识(02)-拆箱与装箱
    网络协议 14
    网络协议 13
    网络协议 12
  • 原文地址:https://www.cnblogs.com/jiangyi666/p/5753555.html
Copyright © 2011-2022 走看看