Java — использование импортированных методов из суперкласса

Возможный дубликат:
Почему компилятор Java не должен поддерживать наследование импорта?

Могу ли я сделать следующее: Скажем, у меня есть класс A, который расширяет класс B. B импортировал класс C, у которого есть собственные методы, которые использует B. Может ли A использовать те же методы из C без прямого импорта C, поскольку A расширяет B?


person Jeeter    schedule 09.01.2013    source источник
comment
Почему бы вам не импортировать те же классы в класс A? Похоже, ты замышляешь что-то подозрительное...   -  person jahroy    schedule 10.01.2013
comment
Это был один из тех вопросов, что если... Мне было только интересно, сделала ли это возможной Java.   -  person Jeeter    schedule 10.01.2013
comment
Не для того, чтобы отговаривать вас от вопросов, но иногда лучше сначала попробовать, если это возможно :)... У меня был профессор, который говорил, что вмешательство человека должно быть последним средством.   -  person Adam Gent    schedule 10.01.2013


Ответы (3)


No.

Но если бы ты сказал:

Скажем, у меня есть класс A, который расширяет класс B. B имеет импортированный расширенный класс C, который имеет свои собственные методы, которые использует B. Может ли A использовать те же методы из C, не импортируя C напрямую, поскольку A расширяет B.

Тогда A может использовать методы C protected и public (и дружественные методы, если они находятся в одном пакете) без импорта C.

person Adam Gent    schedule 09.01.2013
comment
Верно. Мне просто интересно, так как B может использовать методы C. В любом случае, я получил много замечательных ответов, так что спасибо! :) - person Jeeter; 10.01.2013
comment
Да, я уточнил только на тот случай, если это то, что вы имели в виду, и для будущих людей, которые зададутся этим вопросом. - person Adam Gent; 10.01.2013

Ключевое слово imports является синтаксической конструкцией; это не имеет ничего общего с классами, объявленными в этом файле.

Когда вы используете класс, компилятор не имеет возможности узнать, какие классы или пакеты были импортированы его исходным кодом.

person SLaks    schedule 09.01.2013

Нет. Импорт является локальным для класса.

Вам нужно будет либо:

  • импортировать C в A
  • создайте метод в B, который может вызывать A, который обертывает вызов C
person Bohemian♦    schedule 09.01.2013
comment
Ok. Хоть это и излишний вопрос, любопытство никогда не помешает, верно? :) Спасибо! - person Jeeter; 10.01.2013