2016-04-23 78 views

回答

1

子类中的重载没有限制。例如,我可以有:

public class A { 
public String test(String input) { 
    //do something 
} 
} 

public class B extends A { 
public String test(String input, String input2) { 
    //do something 
} 
} 

B testInstance = new B(); 
testInstance.test("one", "two"); 
testInstance.test("one"); 

对于这样的问题,您可以随时尝试自己并找出答案。

1

总而言之 - 是的。你可以在子类中重载方法。例如: -

public class Parent { 
    public void print(String s) { 
     System.out.println("That was a string: " + s); 
    } 
} 

public class Child { 
    public void print(int i) { 
     System.out.println("That was an int: " + i); 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
     Child c = new Child(); 
     c.print("hello"); // prints "That was a string: hello" 
     c.print(7); // prints "That was an int: 7" 
    } 
} 
0

当重载的方法,它基本上与创建与其他同名没有直接关联一个全新的方法,它是重要的签名。 所以如果你在具有不同签名的子类中创建一个方法,它将被编译器视为该类的不同和新方法,所以它不会将它与超类的方法关联起来。

0

在子类中可以重载。如果使用不同参数的超类创建一个名称相同的方法,那么它将被视为单独的方法。 Sub类也会有超类的方法,所以根据参数类型在编译时决定要调用的方法。在编译时声明哪个方法被称为静态多态。这里的例子 -

Class A{ 
    void m1(int x){ 
     System.out.println("m1 in A"); 
    } 
} 
Class B extends A 
{ 
    void m1(String str) 
    { 
     System.out.println("m1 in B"); 
    } 
} 
Public Class Test 
{ 
    public static void main(String[] aa) 
    { 
     B b = new B(); 
     b.m1(10); 
     b.m1("Hello World!!") 
    } 
} 

希望这会有所帮助。