Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Public void f1(int a1);
} Интерфейсы не могут расширять классы (наследовать от классов). Реализация методов (переопределение методов), объявленных в интерфейсах выполняется в классах. При этом если в классе наследуется иерархия интерфейсов, то необходимо переопределить методы как в суперинтерфейсе (базовом интерфейсе), так и в производных интерфейсах, т.е. переопределить (реализовать) все методы всех интерфейсов, в создаваемом классе. В противном случае, класс должен быть объявлен как абстрактный. В теле интерфейса могут содержатся объявления методов (без реализации), т.е. абстрактных методов, которые задают структуру организации работы с объектом но определяются в классах, реализующих интерфейс. Реализация методов интерфейсов в классах должна быть объявлена со специализацией public. Поля в интерфейсах являются глобальными для класса его реализующего. Они могут быть только public, final, static, т.е. неизменямые, независмо от того, указаны ли какие либо модификаторы из public, final, static в объявлении. Интерфейс можно использовать как метод импорта разделяемых переменных, инициализированных нужными значениями во множественные классы, реализующие этот интерфейс. Вданном случае интерфейс может содержать и только поля. Поля становятся доступными и видимыми для всех объектов всех реализующих классов. Для реализации интерфейсов необходимо наследовать интерфейс (ы) в классе и переопределить все методы, объявленные в интерфейсе, в противном случае класс будет абстрактным. Если класс реализует два интерфейса, содержащие один и тот же метод, то пользователи любого интерфейса будут использовать один и тот же метод. Пример: Объявление интерфейса public interface My_int { static final string str = «Тест интерфейса»; string str1 = «Проба» Public int My_met (int switch); } //Реализация абстрактных методов интерфейса в классе
Сlass TestInt implements My_int {public int My_met (int switch) {if (switch= = 0) return (0) Else return (switch*switch)} public void f1 () {…….}} При переопределении методов можно использовать модификаторы native (метод, реализованный на другом языке программирования) или abstract, указывающий, что данный метод не реализуется, а просто объявляется в классе. Если метод объявленный в классе использует иной список параметров, чем в интерфейсе, то реализуется перегрузка, а не переопределение метода, т.е. для переопределения должны полностью совпадать сигнатуры методов. Если реализуемый класс не является абстрактным классом, то в классе необходимо определить тело каждого объявленного в наследуемых интерфейсах метода. Интерфейс после его реализации можно использовать в качестве типа данных, т.е. переменную интерфейса можно описывать так же, как и любую переменную класса, реализующего этот интерфейс.
|