progs.biz  
Начало>Java>Основы>Урок 29
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
Обзор книг
Обзор программ

Ленди М. и др. Borland JBuilder. Руководство разработчика
Ленди М. и др. Borland JBuilder. Руководство разработчика
Заказать на Озоне



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

Введение в Java
Урок 29. Интерфейсы

Интерфейсы в Java предназначены только для объявления некоторых методов и констант. Никакие реализации методов в интерфейсах не предусматриваются. Т. е. интерфейс только содержит информацию о том, что методы с такими-то названиями в мнем существуют, но не содержит информации, как именно эти методы работают. Реализация же методов интерфейса будет содержаться в классах, которые этот интерфейс реализуют.

Интерфейсы вводятся ключевым словом interface. В объявлении же класса, реализующего некоторый интерфейс, после имени класса идет ключевое слово implements, после которого следует имя интерфейса или интерфейсов (класс может реализовывать несколько интерфейсов).

Вот примеры интерфейса для геометрической фигуры и 3-х классов конкретных герметрических фигур, реализующих этот интерфейс:

public interface IFigure {
    double pi = 3.1415;
    // Площадь.
    double square();
}
// Класс прямоугольника.
public class Rect implements IFigure {
    int width = 0;
    int height = 0;
    Rect(int width, int height){
        this.width = width;
        this.height = height;
    }
    public double square(){
        return width * height;
    }
}
// Класс треугольника.
public class Triangle implements IFigure {
    double leg1 = 0;
    double leg2 = 0;
    public Triangle(double leg1, double leg2){
        this.leg1 = leg1;
        this.leg2 = leg2;
    }
    public double square() {
        return leg1 * leg2 * 0.5;
    }
}
// Класс круга.
public class Circle implements IFigure {

    double radius;
    public Circle(double radius){
        this.radius = radius;
    }
    public double square() {
        return radius * radius * pi;
    }
}

А вот использование указанного интерфейса и классов, его реализующих:

public class Test {
    public static void main(String[] args) {
        Rect r = new Rect(2, 4);
        System.out.println("Rect: " + r.square());
        
        Triangle t = new Triangle(3, 4);
        System.out.println("Triangle: " + t.square());
        
        Circle c = new Circle(1);
        System.out.println("Circle: " + c.square());
    }
}

Обратите внимание, что каждый класс содержит метод square для вычисления площади. Этот метод обязан быть в каждом классе, так как он есть в интерфейсе, от которвх классы наследуются. Также обратите внимание, что в классе Circle мы использем константу pi из интерфейса. В других языках программирования объявление констант в интерфейсах не допускается.

Выведет программа естественно Rect: 8.0 Triangle: 6.0 и Circle: 3.1415.

Рассылки нашего сайта на 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 Игорь Алексеев