Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

26. Java – Инкапсуляция. Пример. Преимущества инкапсуляции. 27. Java – Интерфейсы. Чем похожи класс и интерфейс?. Чем отличается класс от интерфейса?




26. Java – Инкапсуляция

Инкапсуляция — это одна из четырёх фундаментальных концепций ООП. Названия оставшихся трёх: наследование, полиморфизм, абстракция.

Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.

Для достижения инкапсуляции в Java:

· Объявите переменные класса как private.

· Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.

 

Пример

Ниже приведён пример процесса инкапсуляции в Java:

/* File name: EncapTest. java */public class EncapTest { private String name; private String idNum; private int age; public int getAge() { return age; } public String getName() { return name; } public String getIdNum() { return idNum; } public void setAge(int newAge) { age = newAge; } public void setName(String newName) { name = newName; } public void setIdNum(String newId) { idNum = newId; }}

Публичные методы setXXX() и getXXX() являются точками доступа переменных экземпляра класса EncapTest. Обычно эти методы упоминаются как геттеры и сеттеры. Следовательно, любой класс, который хочет получить доступ к переменным, должен получить к ним доступ через эти геттеры и сеттеры.

Доступ к переменным класса EncapTest можно получить следующей программой:

/* File name: RunEncap. java */public class RunEncap { public static void main(String args[]) { EncapTest encap = new EncapTest(); encap. setName(" Олег" ); encap. setAge(28); encap. setIdNum(" 12343ms" ); System. out. print(" Имя: " + encap. getName() + ", возраст: " + encap. getAge()); }}

Мы получим следующий результа:

Имя: Олег, возраст: 28

Преимущества инкапсуляции

· Поля класса можно сделать только для чтения или только для записи.

· Класс может иметь полный контроль над тем, что хранится в его полях.

 

27. Java – Интерфейсы

Интерфейс — это ссылочный тип в Java. Он схож с классом. Это совокупность абстрактных методов. Класс реализует интерфейс, таким образом наследуя абстрактные методы интерфейса.

Вместе с абстрактными методами интерфейс в Java может содержать константы, обычные методы, статические методы и вложенные типы. Тела методов существуют только для обычных методов и статических методов.

Далее разберём зачем нужны интерфейсы в Java и для чего используются, разницу абстрактного класса и интерфейса.

Написание интерфейса схоже с написанием класса. Но класс описывает атрибуты и поведения объекта. И интерфейс содержит поведения, которые класс реализует.

Если класс, реализующий интерфейс, не является абстрактным, все методы интерфейса должны быть определены в классе.

Чем похожи класс и интерфейс?

Интерфейс схож с классом следующим образом:

· Интерфейс может содержать любое количество методов.

· Интерфейс записан в файле с расширением. java, и имя интерфейса совпадает с именем файла.

· Байт-код интерфейса находится в. class файле.

· Интерфейсы появляются в пакетах, и их соответствующий файл байт-кода должен быть в структуре каталогов, которая совпадает с именем пакета.

Чем отличается класс от интерфейса?

Однако, интерфейс всё же отличается от класса. Отличие интерфейса от класса в Java:

· Вы не можете создать экземпляр интерфейса.

· В интерфейсе не содержатся конструкторы.

· Все методы в интерфейсе абстрактные.

· Интерфейс не может содержать поля экземпляров. Поля, которые могут появиться в интерфейсе, обязаны быть объявлены и статическими, и final.

· Интерфейс не расширяется классом, он реализуется классом.

· Интерфейс может расширить множество интерфейсов.

Объявление интерфейсов

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

Пример 1

/* File name: NameOfInterface. java */import java. lang. *; // Любое количество запросов импорта public interface NameOfInterface { //создание интерфейса // Любое количество полей final и static // Любое количество объявлений абстрактных методов}

Интерфейсы имеют следующие свойства:

· Интерфейс абстрактный косвенно. Вам не нужно использовать ключевое слово abstract во время объявления интерфейса.

· Каждый метод в интерфейсе косвенно абстрактным, поэтому ключевое слово abstract не нужно.

· Методы в интерфейсе косвенно публичны.

Пример 2

/* File name: Animal. java */interface Animal { public void eat(); public void travel(); }

Реализация интерфейса

Когда класс реализует интерфейс, вы можете представить себе, что класс словно подписывает контракт с интерфейсом, соглашаясь совершить конкретные его поведения. Если класс не исполняет все поведения интерфейса, то класс должен объявить себя абстрактным.

Класс использует ключевое слово implements для реализации интерфейса. Ключевое слово implements появляется при объявлении класса в его расширенной части.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...