[Java] Урок: Понятие интерфейса - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Alowir, Sanoxxx  
[Java] Урок: Понятие интерфейса
[CM]Jaxson Дата: Вторник, 09.10.2012, 19:30 | Сообщение # 1
٩(̾●̮̮̃̾•̃̾)۶
Сообщений: 801
Статус: Offline
На начальных уроках от Шелби вы поднакомились с таким понятием, как переменная. На самом же деле в переменных можно хранить не только числа и строки, но так же и экземпляры объектов. Допустим, мы хотим написать программу для автоматизации предприятия торговли. И в этой программе хотим написать какой то алгоритм анализа товаров, для чего для каждого вида товаров определяем свой класс, который будет содержать свои специфические для данной товарной группы алгоритмы анализа. В данный момент мы, конечно, не будем писать эту программу, а представим, что пишем ее, что бы просто изучить понятие интерфейса и как оно поможет нам в будущим. Допустим, мы создали заготовки классов для таких видов товаров, как "обувь" и "хлеб", и написали тестовый пример:
Code

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 уроке и запускаем:

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

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));
        }
}

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





[ Skype ] [ Профиль ] [ Mods Pack ] [ VK ] [ Геймеры ]
Помогаю новичкам, по всем вопросом комне в Skype/VK. VK ВЗЛОМАН, НЕ РАБОТАЙТЕ СОМНОЙ. МНЕ ВСЁ ВЗЛОМАЛИ СКАЙП И ВК. СКАЙП ВОССТОНОВИЛ.


Сообщение отредактировал [CM]Jaxson - Вторник, 09.10.2012, 20:33
[WS]Grenhelgets Дата: Понедельник, 01.12.2014, 17:47 | Сообщение # 2
Боец
Статус: Offline
Добавь в скайп nicelse.ws предложение есть.

Добавлено (01.12.2014, 17:47)
---------------------------------------------
Добавь в скайп nicelse.ws предложение есть.

CM_BaTbka Дата: Понедельник, 02.03.2015, 11:28 | Сообщение # 3
Боец
Сообщений: 143
Статус: Offline
Добавь в скайп nicelse.ws предложение есть

Добавлено (02.03.2015, 11:28)
---------------------------------------------
Добавь в скайп nicelse.ws предложение есть


Цель 100+ репутации [✔]
Цель 200+ репутации [✔]
Цель 300+ репутации.[✔]
Цель 400+ репутации.[✔]
Цель 500+ репутации [✖]
Цель 1000+ репутации [✖]
Cheater CM. [✖]
http://cheat-master.ru/forum/17-344495-1
http://cheat-master.ru/forum/199-429322-1
http://cheat-master.ru/forum/199-429328-1
BodyToMind Дата: Среда, 29.07.2015, 18:20 | Сообщение # 4
Боец
Сообщений: 139
Статус: Offline
Спасибо пригодится в дальнейшем :3

[✔]100 репутации[✔]
[✔]200 репутации[✔]
[✔]300 репутации[✔]
[✔]400 репутации[✔]
[✔]500 репутации[✔]
[✖]1000 репутации[✖]
[CM]Sivka Дата: Пятница, 28.08.2015, 02:28 | Сообщение # 5
Боец
Сообщений: 55
Статус: Offline
Все делаю, как написано не получается компилировать помоги вот вк: http://vk.com/b.paui
Pavel-[CM] Дата: Вторник, 24.05.2016, 18:41 | Сообщение # 6
Боец
Сообщений: 61
Статус: Offline
У меня не получается помогите добрые люди!
[CM]Kingster Дата: Понедельник, 20.06.2016, 13:53 | Сообщение # 7
Боец
Сообщений: 245
Статус: Offline
Pavel-[CM], ++

Пользователь Cheat - Master уже 400 дней.

Я в Контакте - vk.com/buddy_fly
GlaroX Дата: Четверг, 24.11.2016, 03:00 | Сообщение # 8
Боец
Сообщений: 201
Статус: Offline
Отличный разбор немного изучаю!

  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7210]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи
Akery [03:16]

Securityzle [00:49]

smartservicerecruit [21:41]

pashafedlyuk [21:32]

Nauk555 [21:21]

Nauk999 [21:05]

siege [17:30]

CryptoRiched [00:42]

FANNEIL123 [08:17]

fanneil100 [07:56]

wyir [23:05]

morgenshtern2195 [22:41]

gdhhdhdjdjdjdjd [19:03]