我是Java世界的新手,对使用其中一个任务感到怀疑.我有一个Base类引用和一个私有方法,以及一个派生类,其中相同的方法被覆盖并具有公共评估.现在,当我开始编译这段代码时,我收到了编译错误.有人可以告诉我为什么会这样吗:
码:
import java.util.*;
import java.lang.*;
import java.io.*;
class Base
{
private void myfunc()
{
System.out.println("Base class");
}
}
class Derived extends Base
{
public void myfunc()
{
System.out.println("Derived class");
}
}
class MyClass
{
public static void main (String[] args)
{
Base b = new Derived();
b.myfunc(); // This line is giving compilation issue.
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:错误:myfunc()在Base b.myfunc()中具有私有访问权限; ^
您收到此错误,因为您的对象被定义为Base.这意味着Base即使您实例化为,也只有定义的方法可用Derived.
显然,myFunc()从Base无法访问.
相反,将其定义为子类:
Derived obj = new Derived();
Run Code Online (Sandbox Code Playgroud)