Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Связь классов и интерфейсов



Механизм интерфейсов помагает обходить ограничение 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.

  1. package javaapplication38;
  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import java.util.logging.Level;
  5. import java.util.logging.Logger;
  6. /**
  7. *
    • @author Nezdoliy
  8. */
  9. public class Student_sportsmen extends Student implements Plavalnyi{
  10. String fio_trener;
  1. public Student_sportsmen(String fio, Date date_vstup, String specializacia, String universit, String gruppa,
  2. int sred_ball, String fio_trener) {
  3. super(fio, date_vstup, specializacia, universit, gruppa, sred_ball);
  4. this.fio_trener = fio_trener;
  5. System.out.println("Це працює конструктор 1 класу Student_sportsmen ");
  6. }
  1. public static void main(String[] args) {
  2. try {
  3. SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
  4. Date dat1 = dateFormat.parse("23.01.1991");
  5. Student_sportsmen std1 = new Student_sportsmen("Sidorov S.V.", dat1, "ekolog", "ЧДУ", "356", 76, "Зубрицький О.П.");
  6. std1.pryimaty_ychast_sorevnov("Kiev", new Date(),"Triatlon");
  7. } catch (ParseException ex) {
  8. System.out.println("Це обробка помилок ");
  9. }
  10. }
  1. public boolean navchatys(String oblast_dialnosty, int time) {
  1. System.out.println("Це працює метод navchatys у класі Student_sportsmen ");
  2. return false;
  3. }
  1. public float get_riven_maysternosty(String oblast_dialnosty) {
  2. System.out.println("Це працює метод get_riven_maysternosty у класі Student_sportsmen ");
  3. return 0.0f;
  4. }
  1. public void bigaty_na_zarydky() {
  2. System.out.println("Це працює метод bigaty_na_zarydky у класі Student_sportsmen ");
  3. }
  1. public boolean pryimaty_ychast_sorevnov(String misce, Date start, String vid_sporty) {
  2. this.plavaty(400);
  3. System.out.println("Студент "+this.fio +", якого тренує "+this.fio_trener+

" приймає участь у змаганнях з "+vid_sporty);

  1. return false;
  2. }

public void plavaty(int distancia) {

System.out.println("Це заплив студента "+this.fio+" на "+ distancia+" метрів ");

}

}





Дата публикования: 2015-04-06; Прочитано: 258 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...