Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Java. объектно-ориентированное программирование с интерфейсами



Новый тип вводится спецификацией интерфейса.

В C++ класс неявно определяет интерфейс. И в силу этого одновременно объявляет тип. При этом единственный интерфейс связывается с единственной реализацией. Множественное наследование и абстрактные классы в C++ - это прежде всего попытка обойти жесткую детерминированность.

В Java подобного ограничения нет. Любой интерфейс (тип) может иметь много реализаций. Любой класс может реализовывать много интерфейсов.

В качестве примера попробуем объявить собственный тип "число". Для краткости ограничимся операциями сложения и умножения.

/* INumber.java ------------------------------------------------------ (8<* * Декларация типа INumber и фрагмент программы, использующий этот тип. * * -------------------------------------------------------------------- */ interface INumber { public void setValue(String s); public INumber add(INumber n); public INumber mul(INumber n); public String toString(); } class CalcNumber { void calculation(INumber n1, INumber n2, INumber n3) { INumber xx; xx = n2; // Если закомментировать предыдущую строку, то компилятор выдаст ошибку: // variable xx might not have been initialized xx.setValue("5.3"); System.out.println("xx="+xx.toString()); n1.setValue("21"); n2.setValue("37.6"); System.out.println("n1="+n1.toString()); System.out.println("n2="+n2.toString()); System.out.println("n3="+n3.toString()); System.out.println("(n1+n2)*n3=" + n1.add(n2).mul(n3).toString()); n1.setValue("21"); System.out.println("(n2+n1)*n3=" + n2.add(n1).mul(n3).toString()); n2.setValue("37.6"); System.out.println("n1*(n2+n3)=" + n1.mul(n2.add(n3)).toString()); n1.setValue("21"); n2.setValue("37.6"); System.out.println("n3*(n1+n2)=" + n3.mul(n1.add(n2)).toString()); } } // (8<

Из приведенного примера видно: Интерфейс позволяет объявить тип. В приведенном примере объявляются переменные и параметры типа INumber, описываются действия над ними. Компиляция выполняется без ошибок. Реализация типа передается через объект. Объекты n1, n2 и n3 передаются через параметры. Тем самым компилятор информируется, что объекты проинициализированы где-то за пределами данного модуля. Этого достаточно. Классы пока не нужны. Инициализировать объект в приведенном модуле мы не можем, т.к. для этого необходимо иметь реализацию.

Другие статьи по теме:

- почтовая программа - своими руками!
- Java-приложение: заглянем внутрь
- возможности языка java
- практическое введение в программирование на javascript
- поисковая оптимизация как вид деятельности


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами