// Абстрактный класс Building
public abstract class Building {
private String name;
private String address;
private int yearOfConstruction;
private String architectName;
private boolean isCulturalMonument;
// Конструктор
public Building(String name, String address, int yearOfConstruction, String architectName, boolean isCulturalMonument) {
this.name = name;
this.address = address;
this.yearOfConstruction = yearOfConstruction;
this.architectName = architectName;
this.isCulturalMonument = isCulturalMonument;
}
// Геттеры и сеттеры
// ...
// Метод toString()
@Override
public String toString() {
return "Building{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", yearOfConstruction=" + yearOfConstruction +
", architectName='" + architectName + '\'' +
", isCulturalMonument=" + isCulturalMonument +
'}';
}
}
// Класс Library, наследник от Building
public class Library extends Building {
private int numberOfBooks;
private boolean hasReadingRooms;
// Конструктор
public Library(String name, String address, int yearOfConstruction, String architectName, boolean isCulturalMonument,
int numberOfBooks, boolean hasReadingRooms) {
super(name, address, yearOfConstruction, architectName, isCulturalMonument);
this.numberOfBooks = numberOfBooks;
this.hasReadingRooms = hasReadingRooms;
}
// Геттеры и сеттеры
// ...
// Метод toString()
@Override
public String toString() {
return "Library{" +
"numberOfBooks=" + numberOfBooks +
", hasReadingRooms=" + hasReadingRooms +
"} " + super.toString();
}
}
// Остальные классы создаются аналогично
// Интерфейсы LivingHouse и SocialHouse
public interface LivingHouse {
void residentsInfo();
}
public interface SocialHouse {
void socialActivityInfo();
}
// Пример класса House с интерфейсом LivingHouse
public class House extends Building implements LivingHouse {
private int numberOfResidents;
// Конструктор
public House(String name, String address, int yearOfConstruction, String architectName, boolean isCulturalMonument,
int numberOfResidents) {
super(name, address, yearOfConstruction, architectName, isCulturalMonument);
this.numberOfResidents = numberOfResidents;
}
// Геттеры и сеттеры
// ...
// Метод toString()
@Override
public String toString() {
return "House{" +
"numberOfResidents=" + numberOfResidents +
"} " + super.toString();
}
// Реализация метода из интерфейса LivingHouse
@Override
public void residentsInfo() {
System.out.println("Number of residents: " + numberOfResidents);
}
}
Это простой пример. Вам нужно будет добавить больше свойств и методов в соответствии с вашими требованиями. Также не забудьте добавить геттеры и сеттеры для всех свойств.