Есть интерфейс SimpleObject с public final String NAME = "SimpleObject";
Есть интерфейс Button, который наследуется от SimpleObject. И там также есть public final String NAME = "Submit".
Так как константы, то перезаписать нельзя.
System.out.println(SimpleObject.NAME); как работает эта строка - понятно
System.out.println(Button.NAME); как работает эта строка - не понятно
По логике
interface Button extends SimpleObject содержит
public final String NAME = "SimpleObject";
public final String NAME = "Submit";
почему допустимо содержание двух констант с одинаковым именем и как компилятор понимает, какую вызвать? Вторая (дочерняя) затеняет родительскую или как?
package com.javarush.task.task13.task1316;
/*
Некорректные строки
*/
public class Solution {
public static void main(String[] args) throws Exception {
System.out.println(SimpleObject.NAME);
System.out.println(Button.NAME);
}
interface SimpleObject {
String NAME = "SimpleObject";
}
interface Button extends SimpleObject {
final String NAME = "Submit";
String onPress(Object o);
}
}