Пацей 4 сем / Лекции / СТПI_2_ООП
.pdfКлассы, интерфейсы, наследование, полиморфизм, коллекции и т.д.
определяет внешний
доступный из других
(enclosing) класс, Состав класса
пакетов
[public] [final] [abstract] class ИмяКласса {
{} // логические блоки
//внутренние классы
//поля
private // закрытые public // открытые
наследование по умолчанию только от Object
// дружественные (по умолчанию) protected // защищенные
// конструкторы
public // открытые
//дружественные (по умолчанию) protected // защищенные
private // закрытые // методы
public // открытые
...
Ограничение доступа
►private —только членам данного класса;
►по умолчанию (package-private) —
классам, находящимся в том же пакете;
►protected —подклассам, находящимся в
томже пакете/в другом пакете;
►public —для всех классов в этом и других пакетах.
Переменные класса, экземпляра и константы
[cпецификатор] Тип имя;
/ класс доступен из других пакетов public class Bill {
private int id;
// переменная экземпляра класса
static int bonus; // переменная класса
public final int MIN_TAX = 8 + (int)
(Math.random() * 5);
// константа экземпляра класса public final static int P_TAX = 6;
// константа класса
}
Конструкторы и деструкторы
public Bill() { //
super(); // вызывается автоматически /* если класс будет объявлен вообще без конструктора, то компилятор предоставит его именно в таком виде */
}
ссылкаthis - аналогично
Методы
►Только внутри классов
[доступ] [static] [abstract] [final] [synchronized] [native] [<параметризация>]
ВозвращаемыйТип имяМетода (список параметров)
[throws список исключений]
Статические методы и поля
Как в С#
Модификатор final
►переменные - константы ►методы - нельзя замещать в подклассах
►классы - нельзя создавать подклассы
public class Bill {
public final int P_VAX =11; // константа класса
{
// P_VAX =10; // логический блок
}
public Bill() { //
// P_VAX = 9; // конструктор, знач по умолчанию
// получить не может
}
Абстрактные методы
►в абстрактных классах или интерфейсах
public abstract class AbstractAction {
private Long account; public AbstractAction () { }
public abstract void doPayment(double amountPayment public void setAccount(Long account) {
this.account = account;
} }