【问题标题】:Is overloading in inheritance class possible in Java?在 Java 中是否可以在继承类中重载?
【发布时间】:2019-04-12 07:16:27
【问题描述】:

Java 中的继承类可以重载吗?父类和子类包含相同的方法名,但参数不同。这是超载吗?

class Parent {
    public void add(int a) {
        System.out.println("I am parent" + a);
    }
}

class Child extends Parent {
    public void add(long a) {
        System.out.println("I am child.");
    }
}

【问题讨论】:

  • 您是否尝试致电Child c = new Child(); c.add(1); c.add(1L); ?您已经拥有一切可以自己发现答案。然后,对Parent p = new Child(); p.add(1); p.add(1L); 执行相同操作
  • 是的,这是超载。

标签: java inheritance overloading


【解决方案1】:

是的。在扩展任何类时,在内部这意味着父类的所有可访问行为都将在子类中存在或继承。即,在您的情况下,具有不同参数的相同名称正在重载。

【讨论】:

    【解决方案2】:

    是的,当然,继承类中的重载在 Java 中是可能的。 Java 编译器检测到 add 方法有多个实现。所以java编译器会根据参数决定执行哪个方法。

    class Parent {
        public void add(int a) {
            System.out.println("I am parent " + a);
        }
    }
    
    class Child extends Parent {
        public void add(long a) {
            System.out.println("I am child.");
        }
    }
    class Demo{
        public static void main(String args[]){
    
        Child child = new Child();
        child.add(1); // prints "I am parent 1"
        child.add(1L); // prints "I am child."
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多