Работа на Java.Наследование с этим и супер
У меня есть абстрактный класс как таковой:
public abstract class Foo {
protected Logger log = null;
// other stuff
public boolean isLoggerSet() {
return (this.log != null) ? true : false;
}
}
Теперь я расширить этот класс как таковой:
public class Bar extends Foo {
public Bar() {
this.log = Logger.getLogger(Bar.class);
}
public void someMethod(String[] args) {
Bar b = new Bar();
if(b.isLoggerSet()) {
// do some stuff
}
}
}
The question:
ли мой Bar.class на самом деле со ссылкой на super.log
, даже если я называю this.log
потому что у Бар нет собственной локальной переменной log
? Или был бы правильным способом реализовать метод isLoggerSet()
, чтобы сделать его абстрактным и заставить Bar.class реализовать его сам на своей локальной копии log
, поскольку он был расширен?
В принципе, я должен сказать this.log
в моем классе Foo, потому что он относится к самому себе. Но в классе Bar я хочу, чтобы иметь возможность проверить null log
, следует ли вместо этого использовать super.log =
в Bar.class?
Существует только одно свойство 'log'. В общем, вам не нужны экземпляры, чтобы иметь свой собственный регистратор; обычно они являются «публичным статическим окончанием». –
'if (this.isLoggerSet())' не будет компилироваться в статическом контексте. –
Используется ли это, если это не «Логгер», который я пытаюсь «проверить нуль»? Я просто использовал регистратор, потому что это был пример. – SnakeDoc