Путаница - доступность членов на 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 ссылочная переменная определит, какой именно метод вызывается. Будет решено во время компиляции.

Если методы переопределены, влияет ли это на выбор?

Статические методы не являются полиморфными, поэтому сценария переопределения не будет.

Другие вопросы по тегам