相关疑难解决方法(0)

子类是否继承私有字段?

这是一个面试问题.

子类是否继承私有字段?

我回答"否",因为我们无法使用"正常的OOP方式"访问它们.但是访谈者认为它们是继承的,因为我们可以间接访问这些字段或使用反射,它们仍然存在于对象中.

我回来后,在javadoc中找到以下引用:

超级私人会员

子类不继承其父类的私有成员.

你知道面试官的意见吗?

java oop inheritance private

233
推荐指数
8
解决办法
21万
查看次数

为什么Java 8不允许使用非公共默认方法?

我们来举个例子:

public interface Testerface {

    default public String example() {
        return "Hello";
    }

}

public class Tester implements Testerface {

    @Override
    public String example() {
        return Testerface.super.example() + " world!";
    }


}

public class Internet {

    public static void main(String[] args) {
        System.out.println(new Tester().example());
    }

}
Run Code Online (Sandbox Code Playgroud)

简单地说,这将打印出来Hello world!.但是说我正在使用返回值做其他事情Testerface#example,例如初始化数据文件并返回一个不应离开实现类的敏感内部值.为什么Java不允许在默认接口方法上使用访问修饰符?为什么它们不能被保护/私有并且可能被子类提升(类似于扩展父类的类如何为重写方法使用更可见的修饰符)?

一个常见的解决方案是转移到抽象类,但在我的特定情况下,我有一个枚举接口,所以这里不适用.我想它或者被忽略了,或者因为接口背后的原始想法是它们是可用方法的"契约",但我想我想要输入关于这个的内容.

我读过" 为什么"最终"在Java 8接口方法中不允许? ",其中指出:

默认方法的基本思想是:它是具有默认实现的接口方法,派生类可以提供更具体的实现

对我来说听起来就像可见性根本不会破坏那个方面.

与链接的问题一样,因为它看起来很难被关闭,所以在这个问题上会得到权威的答案,而不是基于意见的答案.

java java-8 default-method

31
推荐指数
1
解决办法
5624
查看次数

意外行为与最终修饰符相关

这是我的代码

package alpha ;

class A1
{
    static class A11
    {
        private
            final // WHAT IS THE EFFECT OF THIS MODIFIER?
            void fun ( String caller )
            {
                System . out . println ( "A11:\t" + caller ) ;
            }
    }

    static class A12 extends A11
    {
        private void fun ( String caller )
        {
            super . fun ( caller + caller ) ;
        }
    }

    public static void main ( String [ ] args )
    {
        A12 a12 = …
Run Code Online (Sandbox Code Playgroud)

java final private modifiers

2
推荐指数
1
解决办法
286
查看次数

为什么Java 8不允许接口成员是私有的?

虽然有些人之前已经问过这个问题,但是在Java 8发布之前.

以前,不允许使用静态成员,因为实现细节未在接口中定义.这也是为什么没有什么应该是私有的,因为接口的实现者需要提供实现细节.

这种用Java 8改变了,不是吗?默认方法定义实现细节,静态方法也是如此.那么,为什么仍然不允许这样做?

java

2
推荐指数
1
解决办法
96
查看次数

标签 统计

java ×4

private ×2

default-method ×1

final ×1

inheritance ×1

java-8 ×1

modifiers ×1

oop ×1