Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Механизм интерфейсов помагает обходить ограничение Java, запрещающее множественное наследование в классах. Интерфейсы – это альтернатива, лишенная недостатков множественного наследования. Т.о связь интерфейсов с классами осуществляется через ключевое слово implements – класс реализует тот или иной интерфейс. Нет ограничений на количество интерфейсов, которые может реализовывать класс(они все указываются через запятую). Что значит, что класс реализует интерфейс? Это значит, что в классе должны быть реализованы все методы данного интерфейса. Обратимся к нашей модели – у нас есть класс Студент, который является наследником класса Человек и реализует интерфейс Учебный. Код интерфейса –
Листинг 7.
7.1 public interface Navchalny {
7.2 String var_interf_navchal="Це змінна інтерфейсу Navchalny";
7.3 public boolean navchatys(String oblast_dialnosty,int time);
7.4 public float get_riven_maysternosty(String oblast_dialnosty);
7.5 }
В этом интерфейсе присутствуют 2 метода – метод =учиться= (строка 7.2) и метод =показать уровень мастерства по учебной дисциплине=(строка 7.4). Любой класс, который реализует данный интерфейс обязательно должен содержать все методы данного интерфейса. Пример на классе Студент:
Листинг 8.
1. package javaapplication38;
2. import java.util.Date;
3. /**
4. *
4.1. @author Nezdoliy
5. */
6. public class Student extends Human implements Navchalny {
7. Date date_vstup;
8. String specializacia;
9. String universit;
10. String gruppa;
11. int sred_ball;
12. public Student(String fio, Date date_vstup, String specializacia, String universit,
13. String gruppa, int sred_ball) {
14. super(fio);
15. this.date_vstup = date_vstup;
16. this.specializacia = specializacia;
17. this.universit = universit;
18. this.gruppa = gruppa;
19. this.sred_ball = sred_ball;
20. System.out.println("Це працює конструктор 1 класу Student ");
21. }
22. public void zdaty_sesiu(){
23. System.out.println("Це працює метод zdaty_sesiu у класі Student ");
24. }
25. public void otrymat_stipend(){
26. System.out.println(this.toString());
27. this.zdaty_sesiu();
28. System.out.println("Це працює метод otrymat_stipend у класі Student ");
29. }
30. public static void main(String[] args) {
31. Student std1=new Student("Petrov ", new Date(),"Компьютерна інженерія","ЧДУ","121",85);
32. std1.otrymat_stipend();
33. }
34. public boolean navchatys(String oblast_dialnosty, int time) {
35. System.out.println("Це працює метод navchatys у класі Student ");
36. return false;
37. }
38. public float get_riven_maysternosty(String oblast_dialnosty) {
39. System.out.println("Це працює метод get_riven_maysternosty у класі Student ");
40. return 0;
41. }
42. }
Строка 34 и строка 38 Листинга 8 – это реализация в этом классе методов интерфейса Navchalny, который он реализует(строка 6). В случае, когда интерфейсы связаны наследованием и класс реализует младший интерфейс, то в классе должны быть реализованы все методы старших интерфейсов + все методы младшего интерфейса. Пример- интерфейсы Спортивный и Плавательный связаны наследованием. В Спортивном присутствуют методы = бегать на зарядку= и =учавствовать в соревнованиях=, в Плавательном присутствует метод =плавать=. Класс Студент-спортсмен наследуется от класса Студент и реализует интерфейс Плавательный. Это означает, что этот класс имеет все открытые свойства и поведение классов предков(Человек и Студент) и кроме того в поведение класса добавились все методы вышеуказанных интерфейсов. Это контролирует среда разработки и в случае необходимости подскажет нам, какие методы мы забыли реализовать в классе. Пример кода:
Листинг 9.
" приймає участь у змаганнях з "+vid_sporty);
public void plavaty(int distancia) {
System.out.println("Це заплив студента "+this.fio+" на "+ distancia+" метрів ");
}
}
Дата публикования: 2015-04-06; Прочитано: 258 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!