Отправляет email-рассылки с помощью сервиса Sendsay

Изучаем язык Java

  Все выпуски  

Изучаем язык Java


Java для чайников. Урок 4. Понятие интерфейса.

На уроке 2 вы поднакопились с таким понятием, как переменная.  На самом же деле в переменных можно хранить не только числа и строки, но так же и экземпляры объектов. Допустим, мы хотим написать программу для автоматизации предприятия торговли. И в этой программе хотим написать какой то алгоритм анализа товаров, для чего для каждого вида товаров определяем свой класс, который будет содержать свои специфические для данной товарной группы алгоритмы анализа. В данный момент мы, конечно, не будем писать эту программу, а представим, что пишем ее, что бы просто изучить понятие интерфейса и как оно поможет нам в будущим. Допустим, мы создали заготовки классов для таких видов товаров, как "обувь" и "хлеб", и написали тестовый пример:

 

class Shoe {

    public String getName(int id) {

        if(id==1) return("Shoes");

        if(id==2) return("Girl's shoes");

        if(id==3) return("Boots");

        return ("Unknow");

    }

}

 

class Bread {

    public String getName(int id) {

        if(id==1) return("White");

        if(id==2) return("Black");

        if(id==3) return("Loaf");

        return ("Unknow");

    }

}

 

public class Wares {

    public static void main(String[] args) {

        Shoe a;

        a=new Shoe();

        System.out.println(a.getName(1));

        System.out.println(a.getName(2));

        System.out.println(a.getName(3));

        System.out.println(a.getName(4));

        Bread b;

        b=new Bread();

        System.out.println(b.getName(1));

        System.out.println(b.getName(2));

        System.out.println(b.getName(3));

    }

}

 

Компилируем его, как мы это уже умеем на уроке 1 и запускаем:

 

Java для чайников. Урок 4. Понятие интерфейса.

 

А теперь посмотрите на код внимательней. Видите, для каждого класса (вида товара) мы создали свою переменную. А если мы на момент создание переменой еще не знаем, экземпляр какого класса мы будем хранить в ней? Мы же не можем присвоить переменной тип Shoe значение Bread! Но выход есть. Надо использовать интерфейс. Иными словами, создаем некоторое подобие класса, которое по сути дела полноценным классом не является. Это и есть интерфейс. Мы не может создать экземпляр интерфейса, но можем определить переменную типа интерфейс. И в этой переменной мы сможем хранить экземпляры любых классов, которые наследую данный интерфейс. Собственно говоря, интерфейс отличается от класса тем, что в нем можно объявить методы, но нельзя реализовать их. Они уже реализуются в наследуемых классах. Давайте посмотрим на примере, как это делается:

 

interface Ware {

    static final String origin="My corp";

    public String getName(int id);

}

 

class Shoe implements Ware {

    public String getName(int id) {

        if(id==1) return("Shoes");

        if(id==2) return("Girl's shoes");

        if(id==3) return("Boots");

        return ("Unknow");

    }

}

 

class Bread implements Ware {

    public String getName(int id) {

        if(id==1) return("White");

        if(id==2) return("Black");

        if(id==3) return("Loaf");

        return ("Unknow");

    }

}

 

public class Proba {

    public static void main(String[] args) {

        Ware a;

        a=new Shoe();

        System.out.println(a.getName(1));

        System.out.println(a.getName(2));

        System.out.println(a.getName(3));

        System.out.println(a.getName(4));

        a=new Bread();

        System.out.println(a.getName(1));

        System.out.println(a.getName(2));

        System.out.println(a.getName(3));

    }

}

 

Как видим, благодаря интерфейсу, мы можем использовать оду и ту же переменную для хранения разных классов. Откомпилируем пример и убедимся, что он работает, делает то же самое, что и предыдущий:

 

Java для чайников. Урок 4. Понятие интерфейса.

 

С уважением, Шуравин Александр, e-mail: megabax@rambler.ru, автор оставляет за собой право публиковать в рассылках ваши письма, если в письме прямо неоговорено нежелание его публиковать.

 

 


В избранное