Несколько ключевых моментов, на которые вы должны обратить внимание при использовании абстрактных классов:
Класс, содержащий один или несколько абстрактных методов, должен быть объявлен как абстрактный класс.
Объявление класса как абстрактного класса не обязательно содержит абстрактные методы.
Обычно считается, что конкретные методы не должны быть включены в абстрактные классы.
Абстрактные классы не могут быть созданы, то есть объекты этого класса не могут быть созданы.
Пример кода:
Кода -копия выглядит следующим образом:
Импорт java.util.*;
/**
* Эта программа демонстрирует абстрактные классы.
* @version 1.01 2004-02-21
* @author Cay Horstmann
*/
Public Class Persontest
{
Public Static Void Main (String [] args)
{
Человек [] люди = новый человек [2];
// заполнить массив людей студентами и сотрудниками объектами
люди [0] = новый сотрудник ("Harry Hacker", 50000, 1989, 10, 1);
люди [1] = новый студент («Мария Моррис», «Информатика»);
// Распечатать имена и описания всех объектов человека
для (человек P: люди)
System.out.println (p.getName () + "," + p.getDescription ());
}
}
Абстрактный класс
{
общественный человек (строка n)
{
name = n;
}
Общественная абстрактная строка getDescription ();
public String getName ()
{
вернуть имя;
}
Приватное название строки;
}
работник класса распространяется на человека
{
Государственный служащий (String N, Double S, int Year, Mont Month, Int Day)
{
супер (n);
зарплата = s;
Gregoriancalendar Calendar = новый Gregoriancalendar (год, месяц - 1, день);
hireday = calendar.gettime ();
}
Public Double GetaLary ()
{
вернуть зарплату;
}
Общественная дата gethireday ()
{
вернуть уборку;
}
public String getDescription ()
{
return string.format («Сотрудник с зарплатой в размере $%. 2f», зарплата);
}
Public Void поднятие (двойной бабочек)
{
двойное повышение = зарплата * Bypercent / 100;
зарплата += поднять;
}
частная двойная зарплата;
частное свидание
}
Ученик класса распространяет человека
{
/**
* @param n Имя студента
* @param m
*/
Общественный студент (String N, String M)
{
// Переход n к суперклассу конструктору
супер (n);
Major = M;
}
public String getDescription ()
{
вернуть "студента по специальности" + майор;
}
частная строка мажор;
}
В блоке кода:
Кода -копия выглядит следующим образом:
для (человек P: люди)
System.out.println (p.getName () + "," + p.getDescription ());
В P.GetDescription () метод, который будет относиться к объекту подкласса конкретного подкласса.
GetDescription () Лично класс не может быть пропущен, потому что компилятор позволяет только вызовать методы, объявляемые в классе.