progs.biz  
Начало>Java>Основы>Урок 30
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

И. Портянкин. Swing. Эффектные пользовательские интерфейсы
И. Портянкин. Swing. Эффектные пользовательские интерфейсы
Заказать на Озоне



Яндекс-цитирования

Введение в Java
Урок 30. Интерфейс в качестве типа

Мы не можем создать экземпляр интерфейса. Именно потому, что у него не существует реализации методов. Т. е. мы не можем написать, например, так:

IFigure f = new IFigure(); // Ошибка!

С другой стороны в переменную типа интерфейса мы можем записать любой класс, реализующий этот интерфейс. Например, в интерфейс IFigure из прошлого урока мы можем записать класс Rect:

IFigure f = new Rect(2, 4);

Это оказывается весьма удобным - так как реальный тип переменной нам может быть не известен на этапе компиляции. Известен же он может быть только на этапе выполнения программы.

Вот так может быть переделан тестовый класс из прошлого урока:

public class Test {
    public static void main(String[] args) {
        IFigure[] f = new IFigure[2];//= //new Rect(2, 4);
        f[0] = new Rect(2, 4);
        f[1] = new Circle(1);
        for (int i = 0; i < 2; i++){
            System.out.println("Square[" + i + "]: " + f[i].square());
        }
    }
}

Обратите внимание, что тут мы в переменные типа интерейса (у нас массив из 2-х переменных такого типа) записываем классы-потомки этого интерфейса (а именно Rect и Circle). И в момент вызова метода square интерфейса фактически вызовется метод из соответствующего класса, реализующего этот интерфейс. Т. е. площадь для прямоугольника будет считаться по его формуле, а для круга - по его.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев