Нет.Поскольку переменные, используемые внутри метода интерфейса по умолчанию, имеют доступ только к переменным, определенным внутри интерфейса.
public interface Foo {
int BAZ=1;
default int getBazModified(){
return BAZ * 2;
}
}
Помните, что переменные, определенные внутри интерфейса, являются общедоступными, статическими и конечными, и их необходимо инициализировать.
Теперь,
public class Bar implements Foo {
int BAZ = 10;
}
внутри вызывающего класса ..
Foo foo = new Bar();
System.out.print(foo.getBazModified()); // output: 2
Вы можете получить доступ к переменной экземпляра внутри класса "Bar" только путем переопределения метода по умолчанию.Вот так
public class Bar implements Foo {
int BAZ = 10;
@Override
public int getBazModified() {
return BAZ * 2;
}
}
И знаете, если
Foo foo = new Bar();
System.out.print(foo.getBazModified()); // output: 20 (access instance variable)