Путаница - доступность членов на Java
Это вопрос Java:
Когда создается экземпляр Object
который имеет тип ссылки, который отличается от Object
типа, какие сценарии определяют доступность участника?
Например:
Shape shp = new Square(2, 4); //Where Square extends Rectangle and implements Shape
Будет ли Shape
или же Square
методы связаны с этим кодом? Имеет ли значение, если все методы статичны? Имеет ли какое-либо отношение выбор к сокрытию класса? Если методы переопределены, влияет ли это на выбор?
Вот более подробный вопрос о том же:
public abstract class Writer {
public static void write() {System.out.println("Writing...");}
}
public class Author extends Writer {
public static void write() {System.out.println("Writing book");}
}
public class Programmer extends Writer {
public static void write() {System.out.println("Writing code");}
public static void main(String[] args) {
Writer w = new Programmer();
w.write();
}
}
Почему код выше производит вывод -> Запись...
И следующий код производит вывод -> Написание кода
public abstract class Writer {
public void write() {System.out.println("Writing...");}
}
public class Author extends Writer {
public void write() {System.out.println("Writing book");}
}
public class Programmer extends Writer {
public void write() {System.out.println("Writing code");}
public static void main(String[] args) {
Writer w = new Programmer();
w.write();
}
}
При создании экземпляра Object с типом Reference, отличным от типа Object (как в этом примере), какие сценарии определяют доступность элемента?
1 ответ
Будут ли методы Shape или Square связаны с этим кодом? да
Методы, известные Shape, могут вызываться только с использованием shp
ссылочная переменная.
Имеет ли значение, если все методы статичны?
Полиморфные звонки не могут быть сделаны с помощью shp
ссылочная переменная, если все методы статические.
Имеет ли какое-либо отношение выбор к сокрытию класса?
Да, тип shp
ссылочная переменная определит, какой именно метод вызывается. Будет решено во время компиляции.
Если методы переопределены, влияет ли это на выбор?
Статические методы не являются полиморфными, поэтому сценария переопределения не будет.