【问题标题】:what is the runtime type object in this这个中的运行时类型对象是什么
【发布时间】:2020-03-07 21:41:57
【问题描述】:
  1. 我在子类中覆盖了父类的 2 个方法,但我没有得到 Object ooj = new String("abc"); 是如何工作的

  2. 我认为运行时对象是字符串类型,但是当我将obj 传递给函数时,它会调用Object 类型的方法


PARENT CLASS
public class Parent {
    public void function(Object obj) {
        System.out.println("I'm  parent Object Type");
    }

    public void function(String str) {
        System.out.println("I'm parent String");
    }
}

CHILD CLASS

public class Chile extends Parent{
    public void function(Object oob) {
        System.out.println("I'm child object");
    }
    public void function(String str) {
        System.out.println("I'm child string");
    }

    public static void main(String[] args) {
        Parent p = new Chile();
        Object obj = new String("Gaurav");
        p.function(obj);
        String str = new String("and");
        p.function(str);

    }
}

我的问题是为什么它调用Object 方法而不是字符串

【问题讨论】:

标签: java polymorphism


【解决方案1】:

我的问题是为什么它调用 Object 方法而不是 string on

因为编译器不再知道它是String

编译器决定调用哪个重载,这不是在运行时决定的。您正在向它传递对Object 的引用,因此它会查找接受Object 的方法。如果所指的事物可以是某种更具体的类型,则无需费心去尝试。

【讨论】:

  • 但运行时对象是字符串类型,并且在覆盖方法时,对象的运行时类型由 jvm i thik 检查
  • 现在得到了这个,我实际上是在子类中再次重载方法......这就是它调用对象类型方法的原因...... .....我说得对吗??????
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多