java - 重载时编译器错误 - Java

标签 java

class parent
{
    public void disp(int i)
    {
        System.out.println("int");
    }
}

class child extends parent
{
    private void disp(long l)
    {
        System.out.println("long");
    }
}

class impl
{
    public static void main(String... args)
    {
        child c = new child();
        c.disp(0l); //Line 1
    }
}

编译器提示如下

inh6.java:27: error: disp(long) has private access in child
c.disp(0l);

给定的输入是 0L,我试图重载子类中的 disp() 方法。

最佳答案

方法 disp() 被声明为私有(private)

private void disp(long l){System.out.println("long");}

因此,它仅在 child 类中可见,而不是在您尝试调用它的 impl 类中可见。将其可见性更改为公开或重新考虑您的设计。

如果您的问题是为什么看到 disp(long) 而不是 disp(int),这是因为您提供了 long > 方法调用的原始值。

 c.disp(0l); // the 'l' at the end means 'long'

访问修饰符的官方教程是here .

关于java - 重载时编译器错误 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550250/

相关文章:

java - Spring 批量调度程序 : Job Listener works only for the first time the job runs

java - jhipster,Java端的管理员角色识别

java - 返回 sqlite 数据库中列的名称

java - 使用 Fork-Join 时静态变量的使用

java - 从 Android SQlite 数据库获取 ListView 的行 ID

c# - 更快地实现总和(用于 Codility 测试)

java - 变量类型问题

java - 错误插入元素(主键)

Java:连接 GSM USB 调制解调器期间应用程序崩溃

java - 使用 javaFX 解压文件时出错