Цель лабораторной работы:
Цель данной лабораторной работы - изучить понятие интерфейса, научиться создавать интерфейсы в Java и применять их в программах.
Теоретические сведения:
Механизм наследования очень удобен, но он имеет свои ограничения. В частности мы можем наследовать только от одного класса, в отличие, например, от языка С++, где имеется множественное наследование.
В языке Java подобную проблему позволяют решить интерфейсы. Интерфейсы определяют некоторый функционал, не имеющий конкретной реализации, который затем реализуют классы, применяющие эти интерфейсы. И один класс может применить множество интерфейсов.
Задание:
Реализовать интерфейс Printable, имеющий метод println(), используемый для вывода строк. Проверить работу.
Ход работы:
Для начала создадим интерфейс Printable.
publicinterfacePrintable { //объявление интерфейса с именем Printable и уровнем доступа public
voidprintln(); //метод интерфейса, в данном случае println()
}
Теперь создадим класс Car, использующий интерфейс Printable и его методы
public class Car implements Printable{
String brand;
String model;
String configuration;
int price;
int year;
public String getBrand() {
return brand;
}
public String getModel() {
return model;
}
public String getConfiguration() {
return configuration;
}
publicintgetPrice() {
return price;
}
publicintgetYear() {
return year;
}
Car (String brand, String model, String configuration, int price, int year){
this.brand = brand;
this.model = model;
this.configuration = configuration;
this.price = price;
this.year = year;
}
public void println(){
System.out.println("Автомобильмарки: " +brand+
" Модель: " +model+ " Конфигурация: " +configuration+
" Цена " +price+ " Годвыпуска:" +year);
}
}
Разберемегоподробнее.
publicclassCarimplementsPrintable{ //словоimplementsозначаетто, чтоданныйклассреализуеткакой-либоинтерфейс (внашемслучаеинтерфейсPrintable)
String brand; // объявления переменных
String model;
String configuration;
intprice;
intyear;
Далее идут «геттеры» и «сеттеры» для объявленных переменных
public String getBrand() {
return brand;
}
public String getModel() {
return model;
}
public String getConfiguration() {
return configuration;
}
publicintgetPrice() {
return price;
}
publicintgetYear() {
return year;
}
Послеидетконструктор
Car (String brand, String model, String configuration, int price, int year){
this.brand = brand;
this.model = model;
this.configuration = configuration;
this.price = price;
this.year = year;
}
И завершает реализация метода println() из нашего интерфейса Printable, созданного ранее
public void println(){
System.out.println("Автомобильмарки: " +brand+
" Модель: " +model+ " Конфигурация: " +configuration+
" Цена " +price+ " Годвыпуска:" +year);
}
Далее создадим класс-тестер, где проверим работы программы.
public class Tester {
public static void main(String[] args) {
Carc1 = newCar("Mercedes-Benz", "S-klasse", "S500", 7000000, 2015); // создание экземпляра с1класса Car и передача ему параметров
c1.println(); //применение метода println() к c1
Car c2 = new Car("BMW", "7 Series", "750 Li", 7050000, 2016); // создание объекта c2
c2.println(); //применение метода println() к c2
Car c3 = new Car("Audi", "A8", "Long", 7450000, 2016); // создание объекта c3
c3.println(); //применение метода println() к c3
}
}
Рис.18