【发布时间】:2021-09-02 17:16:35
【问题描述】:
以下程序如何正确?
abstract class Calculate
{
abstract int multiply(int a, int b);
}
public class Main
{
public static void main(String[] args)
{
int result = new Calculate()
{
@Override
int multiply(int a, int b)
{
return a*b;
}
}.multiply(12,32);
System.out.println("result = "+result);
}
}
我们在这里更改被覆盖方法的范围。它不再是公共的,它应该是默认范围。是否允许覆盖方法的范围更改?
【问题讨论】:
-
为什么不再公开?它以前是包私有的,这没有改变。
-
我们可以这样创建抽象类对象吗?
-
你在哪里改变任何范围?
-
是的,如您所见。这会创建一个子类的对象。
-
@dan 但这里没有子类,对吧? new Calculate(),不是子类
标签: java inheritance overriding abstract-class visibility