русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Наследование – РыбкаТожеДомашнееЖивотное


Дата добавления: 2015-06-12; просмотров: 502; Нарушение авторских прав


 

Нашкласс Pet познакомитвассещёоднойважнойособенностьюязыка Java, которая называется наследование (inheritance). В реальном мире каждыйчеловекнаследуетчто тоотсвоихродителей. Вмире Java вы тожеможетесоздатьновыйкласс потипуужесуществующего.

 

Класс Pet, и ведет себя, и имеет ат рибуты типичные для многих домашнихживотных – ониедят,спят,некоторыеизнихиздаютзвуки, ихкожаимеетцветитакдалее.Сдругойстороны,домашниеживот ные отличаются друг от друга – собаки лают, рыбки беззвучно плавают, попугайчикиразговариваютлучше , чемсобаки.

 

Ивсе же,всеониспят,едят,иимеютростивес.Поэтомугораздолегче создать класс Fish (рыба) так, чтобы он унаследовал общие черты и поведениеукласса Pet,чемкаждыйразсоздаватьсначалаклассыдля собак,попугаевирыб.

Дляэтогоисуществуетспециальноеключевоеслово extends    
  подкласс:    
      супер класс   Fish это   класса  
Теперьвыимеетеполноеправосказатьчто    
Pet,,а класс Pet – это     класса Fish. Мы использовали класс  
Pet как свообразный шаблон для создания класса Fish.  
                     

classFishextendsPet{


ПрогрнаммированиеJava длядетей,родителей,бабушекдедушек
     
     

}

 

Дажеесливыоставитекласс Fish таким, каконестьсейчас,всёравно

 

 

ужеможноиспользоватькаждыйм етодиат рибут, унаследованныйиз класса Pet. Вот посмотрите:

 

Fish myLittleFish = new Fish(); myLittleFish.sleep();

 

      , Fish,ужеможно  
Хотьмыещёинеобъявлялиникакихметодоввклассе  
вызыватьметод sleep() находящийсявегосупер классе!  
  File New Class      
Нетничег олегчесозданияпод классоввприложении Eclipse! Выберите  
меню , , инапечатайтеслово Fish, какимякласса. Замените  
вполесупер класс java.lang.Object наслово Pet.    




ПрогрнаммированиеJava длядетей,родителей,бабушекдедушек
     
     

Незабывайте,чтомысоздаемпод класскласса Pet, чтобыдобавитьто, что присуще только рыбам, а общий для всех животных код, объявленныйвсупер классе,мыпростоиспользуем.

 

Невседомашниеживотны емогутнырять,норыбки,конечно же, могут.

 

Давайтедобавимкклассу Fish метод dive() нырни.

 

Уметода dive()естьпараметр howDeep,который“говорит”рыбке , как глубоко она должна нырнуть. А ещё мы объявили переменную currentDepth, куда будем помещат ь текущее значение глубины при каждом вызове метода dive(). Этот метод возвращает значение переменнойcurrentDepthвызывающемуклассу.

Сделайте,пожалуйста,воттакойкласс FishMaster:

 

Порарасска затьмаленькийсекрет – всеклассывязыке Java унаследованыиз  
супер дуперкласса Object,дажеесливыинеиспользовалиключевоеслово  
extends. Java классынемогутиметьдвухродителей.  
Вотличиеотлюдей,  
Аеслибыунасэтобылокаквязыке Java ,детинебыли бы  
-      
“подклассами”своихродите лей,авсемальчикипроисходили быот  
Адама,адевочки отЕвы .      

public classFishextendsPet {intcurrentDepth=0;

 

public intdive(inthowDeep){currentDepth=currentDepth + howDeep; System.out.println("Ныряюнаглубину"

 

+ howDeep + "футов" ); System.out.println("Янаглубине"

 

+ currentDepth + "футовнижеуровняморя" ); returncurrentDepth;

 

}

 

}

 

Метод main() вклассе FishMaster создаетэкземпляробъекта Fish и дваждывызываетегометод dive()сразнымипараметрами. Послеэтого онвызываетметодsleep().

public classFishMaster {

 

public static voidmain(String[] args) {Fish myFish = new Fish();

 

myFish.dive(2);

 

myFish.dive(3);


ПрогрнаммированиеJava длядетей,родителей,бабушекдедушек
     
     

myFish.sleep();

 

}

 

}

 

Вовремяв ыполнения FishMaster напечатаетследующее:

 

 

Ныряюнаглубинуфутов2 Янаглубинефутовниже2уровняморя Ныряюнаглубинуфутов3 Янаглубинефутовниже5уровняморя Спокойнойночи,дозавтра

 

Вызаметили,что FishMaster вызываетнетолькометоды объявленные в классе Fish, но также и метод sleep() его супер класса Pet? То то! В

этомиестьвсяпрелестьнаследования – вамненужнокопироватькод
из класса Pet. Просто напишите слово extends и класс Fish сможет
пользоватьсяметодамикл асса Pet!  
   
   


ПрогрнаммированиеJava длядетей,родителей,бабушекдедушек  
       
       
Да,вотещёчто,хотяметод dive()ивозвращаетзначениепеременной  
currentDepth, наш FishMaster им не пользуется. Эт о не беда, просто  
нашему классу FishMaster оно не нужно. Но каким нибудь другим  
классам, которые тоже могут работать с классом   ,    
Fish, это значение  
может быть очень даже полезно. Представьте, например   класс  
    ,   который должен  
FishTrafficDispatcher (регулировщик движения рыб),  
знатьположениядругихрыбвморе          
  преждечемразрешитьныряние  
                     

воизбежаниедорожно транспортныхпроисшествий .

 



<== предыдущая лекция | следующая лекция ==>
СоздаёмДомашнееЖивотное | Переопределение методов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.068 сек.