Я не уверен, что сможете. Java по умолчанию делает все методы виртуальными. Это означает, что самое простое решение не сработает: объявить переменную типа A
, назначить ей свой экземпляр C
и вызвать myMethod
приведет к ] C.myMethod
вызывается.
Вы можете попытаться отразить тип A
и напрямую вызвать его методы. Было бы интересно посмотреть, что произойдет в этом случае, но я был бы удивлен, если бы виртуальная отправка не произошла ...
Вы не можете и не должны.
Это признак плохого дизайна. Либо переименуйте метод, либо включите необходимые общие функции в другой метод или служебный класс.
Вы не можете. Это сделано намеренно.
Класс B
предоставляет интерфейс (как в концепции, а не ключевое слово Java) для подклассов. Он решил не предоставлять прямой доступ к функциям A.myMethod
. Если вам требуется B
для обеспечения этой функции, используйте для этого другой метод (другое имя, сделайте его защищенным
). Однако, вероятно, лучше «предпочесть композицию наследованию».