继承和访问指定

apl*_*ihs 1 java inheritance

我是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()中具有私有访问权限; ^

Jer*_*vel 5

您收到此错误,因为您的对象被定义为Base.这意味着Base即使您实例化为,也只有定义的方法可用Derived.

显然,myFunc()Base无法访问.

相反,将其定义为子类:

Derived obj = new Derived();
Run Code Online (Sandbox Code Playgroud)