此问题已在此处有答案:
Java overloading method selection(2个答案)
昨天关门了。
如果不是,那么对于下面的程序,子类的乘法(方法)是如何访问的,因为我使用了超类Calculation的引用变量,它保存了子类My_Calculation的对象。* 下面程序的输出是:*给定数的和:30给定数之间的差:10子类中给定数的乘积是:200
class Calculation {
int z;
public void addition(int x, int y) {
z = x + y;
System.out.println("The sum of the given numbers:"+z);
}
public void Subtraction(int x, int y) {
z = x - y;
System.out.println("The difference between the given numbers:"+z);
}
public void multiplication(int x, int y) {
z = x * y;
System.out.println("The product of the given numbers in super class is :"+z);
}
}
public class My_Calculation extends Calculation {
public void multiplication(int x, int y) {
z = x * y;
System.out.println("The product of the given numbers in sub class is:"+z);
}
public static void main(String args[]) {
int a = 20, b = 10;
Calculation demo = new My_Calculation();
demo.addition(a, b);
demo.Subtraction(a, b);
demo.multiplication(a, b);
}
}
我期待错误,因为我们只能使用超类的引用访问超类的成员。
1条答案
按热度按时间72qzrwbm1#
在java中,一个子类和它的超类有相同的方法被称为方法覆盖。当通过超类引用调用重写的方法时,Java确定要执行该方法的哪个版本(超类/子类)。被调用的方法由被引用的对象的类型决定,而不是由引用变量的类型决定。这就是Java中的多态性。
在代码中,调用子类的multiplication方法,因为对象的真实的类型是 My_Calculation