Доступ private

Доступ к члену класса предоставляется только методам этого класса, снаружи нельзя к ним обратиться.

Пример: контроль за созданием объекта

class Sundaу {

private Sundaу {}

static Sundaу makeАSundaу(){

return new Sundaу();

}

}

................

//Sundaу x = new Sundaу();-ошибка

Sundaу x = Sundaу.makeASundaу();

Нельзя создать этот объект с помощью конструктора.

Protected

Класс – потомок получает доступ к public и protected членам.

Protected - это доступ и в пределах пакета, и доступ в классах-наследниках.

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

Контроль над доступом – это сокрытие реализации (инкапсуляция). Цель:

1) ограничить доступ клиентов к внутренним методам и полям реализации.

2) Разделение интерфейса и реализации – можно изменять реализацию (все что не public) не изменяя интерфейс (public).

Поэтому при описании класса рекомендуется сначала указывать public – члены.

Доступ к классам

1) Доступ public – класс открыт программистам – клиентам

package access

public class Widget {}

Клиент может обратиться к классу: например, import access.Widget;

2) Доступ пакетный – класс служебный. Только для пользования внутри пакета access (без public).

Нельзя классы объявлять private или protected.

Создание объекта - одиночки

Создание такого класса, который позволяет создать только один объект (Singleton)

class Soup2{

private Soup2 (){} //должен быть хотя бы один закрытый конструктор, иначе

будет создан конструктор по умолчанию с доступом

класса

private static Soup2 ps1 = new Soup2();

public static Soup2 access (){

return ps1;

}

public void f() {}

}

public class Lunch {

public static void main (String[] args){

Soup2 soup2 = Soup2.access();

Soup2.access.f();

soup2.f();

}

}

Объект Soup2 – статическая приватная переменная (существует только в одном экземпляре).

class Soup3

private Soup3 (){}

private Soup3 ps1;

public static Soup getInstance(){

if (ps1= = null)

{ps1 = new Soup3;}

return ps1;

}

}

Design pattern- паттерны проектирования. Методы решения типовых задач, схемы проектирования. Впервые систематизированы и изложены для С++ в

Гамма, Хелм, Джонсон,Влиссидес «Приемы объектно-ориентированного проектирования. Паттерны проектирования». Питер,2006 – Это книга «GoF»-Gang of Four(банды четырех).

В ней описано 23 паттерна. Каждый разработчик обязан их знать.

Тема 7

Повторное использование классов

Наследование и композиция позволяют создать новые классы (типы) на основе существующих.

Композиция – строится новый класс из объектов существующих классов.

Наследование (inheritance) - к существующему классу добавляется свой код, без изменения существующего класса.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: