Философия Java



Упражнения


Решения этих упражнений могут быть найдены в электронном документе The Thinking in Java Annotated Solution Guide, доступном с www.BruceEckel.com.

  • Создайте два класса, A и B, с конструкторами по умолчанию (пустой список аргументов), которые объявляют сами себя. Наследуйте новый класс C от A, и создайте объект класса B внутри C. Не создавайте конструктор для C. Создайте объект класса C и наблюдайте за результатами.
  • Модифицируйте упражнение 1 так, что A и B получат конструкторы с аргументами взамен конструкторов по умолчанию. Напишите конструктор для C и осуществите инициализацию с конструктором C.
  • Создайте простой класс. Внутри второго класса создайте объект первого класса. Используйте ленивую инициализацию для создания экземпляра этого объекта.
  • Наследуйте новый класс от класса Detergent. Переопределите scrub( ) и добавьте новый метод называемый sterilize( ).
  • Возьмите файл Cartoon.java и закомментируйте конструктор для класса Cartoon. Объясните, что случилось.
  • Возьмите файл Chess.java и закомментируйте конструктор для класса Chess. Объясните, что произошло.
  • Докажите, что конструктор по умолчанию создается компилятором.
  • Докажите, что конструктор базового класса вызывается всегда и он вызывается до вызова конструктора дочернего класса.
  • Создайте базовый класс с конструктором не по умолчанию и наследуйте от него класс с конструктором по умолчанию и не по умолчанию. В конструкторах дочернего класса вызовите конструктор базового класса.
  • Создайте класс Root, который содержит экземпляр каждого из классов (которые Вы так же должны создать) Component1, Component2, и Component3. Наследуйте класс Stem от Root который будет так же содержать экземпляры каждого компонента. Каждый класс должен содержать конструктор по умолчанию, который печатает сообщение о этом классе.
  • Измените, упражнение 10, так, что бы каждый класс имел только конструкторы не по умолчанию.
  • 12. Добавьте в существующую иерархию методы cleanup( ) во все классы в упражнении 11.
  • Создайте класс с методом, который перегружен три раза. Наследуйте новый класс, добавьте новую перегрузку метода и посмотрите на то, что все четыре метода доступны в дочернем классе.
  • В Car.java добавьте метод service( ) в Engine и вызовите этот метод в main( ).
  • Создайте класс внутри пакета. Ваш класс должен иметь один метод с модификатором protected. Снаружи пакета попытайтесь вызвать метод и затем объясните результаты. После этого наследуйте новый класс и вызовите этот метод уже из него.
  • Создайте класс Amphibian. От него наследуйте класс Frog. Поместите соответствующие методы в базовый класс. В main( ), создайте Frog и приведите его к базовому типу Amphibian и покажите то, что все методы работают.
  • Измените, упражнение 16 так, что бы Frog переопределял определения методов из базового класса (предоставьте новые определения, используя те же самые обозначения методов). Заметьте, что случилось в main( ).
  • Создайте новый класс с полем static final и полем final, а затем покажите разницу между ними.
  • Создайте класс с пустой final ссылкой на объект. Осуществите ее инициализацию внутри метода (не конструктора) сразу после того, как вы его определили. Покажите то, что final должна быть инициализирована до использования и после этого ее нельзя изменить.
  • Создайте класс, содержащий final метод. Наследуйте от этого класса и попытайтесь переопределить этот метод.
  • Создайте класс с модификатором final и попытайтесь наследовать от него.
  • Докажите, что загрузка класса имеет место быть только один раз. Докажите, что загрузка может быть вызвана созданием первого экземпляра этого класса или доступом к static

    элементу.

  • В Beetle.java, наследуйте специфический тип beetle от класса Beetle, следуйте тому же самому формату, как в существующих классах. Проследите и объясните вывод.
  • [ Предыдущая глава ] [ Краткое оглавление ] [ Оглавление ] [ Список ] [ Следующая глава ]

    Last Update:04/24/2000




    Содержание  Назад  Вперед