Все детали Java через программу

JAVA-ИНТЕРФЕЙС:

Чтобы объявить интерфейс, используйте ключевое слово interface. Он используется для обеспечения полной абстракции. Это означает, что все методы в интерфейсе объявляются с пустым телом и являются общедоступными, а все поля по умолчанию являются общедоступными, статическими и окончательными. Класс, реализующий интерфейс, должен реализовать все методы, объявленные в интерфейсе. Для реализации интерфейса используйте ключевое слово Implements.

Синтаксис:

interface {
// declare constant fields
// declare methods that abstract
// by default.
}

Почему мы используем интерфейс?

Он используется для достижения полной абстракции.

Поскольку Java не поддерживает множественное наследование в случае класса, с помощью интерфейса можно добиться множественного наследования.

Он также используется для достижения слабой связи.

Интерфейсы используются для реализации абстракции. Поэтому возникает вопрос, зачем использовать интерфейсы, когда у нас есть абстрактные классы?

ПРОГРАММА 1: Пример интерфейса в Java.

КОД:

// Java-программа для демонстрации работы

// интерфейс

импорт java.io.*;

// Простой интерфейс

интерфейс In1 {

// открытый, статический и окончательный

final int a = 10;

// открытый и абстрактный

void display();

}

// Класс, реализующий интерфейс.

класс TestClass реализует In1 {

// Реализация возможностей

// интерфейс.

public void display(){

System.out.println("Somnath");

}

// Код драйвера

public static void main(String[] args)

{

TestClass t = новый TestClass();

т.дисплей();

System.out.println(a);

}

}

ВЫВОД:

Somnath
10

ПРОГРАММА 2: Создайте интерфейс для печати и реализуйте его в классе A6, а затем распечатайте текст.

КОД:

интерфейс для печати{

void print();

}

класс A6 применяется для печати{

public void print(){System.out.println("Hello");}

public static void main(String args[]){

A6 obj = новый A6();

объект.print();

}

}

ВЫВОД:

Привет

ПРОГРАММА 3. Создайте один класс Drawable, а затем используйте классы Reactangle и Circle.

КОД:

//Объявление интерфейса: первым пользователем

интерфейс Drawable{

void draw();

}

//Реализация: вторым пользователем

класс Rectangle реализует Drawable{

public void draw(){System.out.println("drawing прямоугольник");}

}

класс Круг реализует Drawable{

public void draw(){System.out.println("drawing circle");}

}

//Использование интерфейса: третьим пользователем

класс TestInterface1{

public static void main(String args[]){

Drawable d=new Circle();//В реальном сценарии объект предоставляется методом, например. получитьDrawable()

д.рисовать();

}}

ВЫВОД:

drawing circle

ПРОГРАММА 4: Пример доступа к другой банковской процентной ставке через интерфейсный банк.

КОД:

интерфейс Банк{

плавающая ставка интереса();

}

класс ВОО осуществляет Банк{

public float rateOfInterest(){return 9.15f;}

}

класс PNB осуществляет банк{

public float rateOfInterest(){return 9.7f;}

}

класс TestInterface2{

public static void main(String[] args){

Банк b=новый SBI();

System.out.println("ROI: "+b.rateOfInterest());

}}

ВЫВОД:

ROI: 9.15

Множественное наследование в Java по интерфейсу

Если класс реализует несколько интерфейсов или интерфейс расширяет несколько интерфейсов, это называется множественным наследованием.

ПРОГРАММА 5: Множественное наследование в Java на примере интерфейса.

Здесь я создал два интерфейса и в классе .so теперь я могу использовать оба свойства интерфейса.

КОД:

интерфейс для печати{

void print();

}

интерфейс Отображаемый{

void show();

}

класс A7 орудия для печати, показа{

public void print(){System.out.println("Hello");}

public void show(){System.out.println("Добро пожаловать");}

public static void main(String args[]){

A7 obj = новый A7();

объект.print();

объект.показать();

}

}

ВЫВОД:

Output:Hello
Welcome

ПРОГРАММА 6: Множественное наследование в Java на примере интерфейса номер два.

КОД:

интерфейс для печати{

void print();

}

интерфейс Отображаемый расширяется Доступный для печати{

void show();

}

класс TestInterface4 реализует Showable{

public void print(){System.out.println("Hello");}

public void show(){System.out.println("Добро пожаловать");}

public static void main(String args[]){

TestInterface4 obj = новый TestInterface4();

объект.print();

объект.показать();

}

}

ВЫВОД:

Hello
Welcome

Метод Java 8 по умолчанию в интерфейсе

Начиная с Java 8, мы можем иметь тело метода в интерфейсе. Но нам нужно сделать его методом по умолчанию. Давайте посмотрим на пример:

ПРОГРАММА 7: метод по умолчанию в интерфейсе, доступ к методу интерфейса класса с использованием класса

Файл: TestInterfaceDefault.java

КОД:

интерфейс Drawable{

void draw();

по умолчанию void msg(){System.out.println("метод по умолчанию");}

}

класс Rectangle реализует Drawable{

public void draw(){System.out.println("drawing прямоугольник");}

}

класс TestInterfaceDefault{

public static void main(String args[]){

Drawable d=новый Rectangle();

д.рисовать();

д.сообщение();

}}

ВЫВОД:

drawing rectangle
default method

Статический метод Java 8 в интерфейсе

Начиная с Java 8, у нас может быть статический метод в интерфейсе. Давайте посмотрим на пример:

Программа 8: Статический метод Java 8 в интерфейсе

пример

Файл: TestInterfaceStatic.java

КОД:

интерфейс Drawable{

void draw();

static int cube(int x){return x*x*x;}

}

класс Rectangle реализует Drawable{

public void draw(){System.out.println("drawing прямоугольник");}

}

класс TestInterfaceStatic{

public static void main(String args[]){

Drawable d=новый Rectangle();

д.рисовать();

System.out.println(Drawable.куб(3));

}}

ВЫХОД:

drawing rectangle
27

Вложенный интерфейс Java

Интерфейс, т. е. объявленный внутри другого интерфейса или класса, называется вложенным интерфейсом. Вложенные интерфейсы используются для группировки связанных интерфейсов, чтобы их было легко поддерживать. На вложенный интерфейс должен ссылаться внешний интерфейс или класс. К нему нельзя получить доступ напрямую.

Синтаксис вложенного интерфейса, объявленного внутри интерфейса

интерфейс interface_name{

интерфейс вложенный_интерфейс_имя{

}

}

Синтаксис вложенного интерфейса, объявленного внутри класса

класс имя_класса{

интерфейс вложенный_интерфейс_имя{

}

}

Пример вложенного интерфейса, объявленного внутри интерфейса

В этом примере мы узнаем, как объявить вложенный интерфейс и как мы можем получить к нему доступ.

ПРОГРАММА 9: вложенный интерфейс, объявленный внутри интерфейса

Here I have used two inteface showable and inside its Message

КОД:

интерфейс Отображаемый{

void show();

интерфейс Сообщение{

void msg();

}

}

класс TestNestedInterface1 реализует Showable.Message{

public void msg(){System.out.println("Привет, вложенный интерфейс");}

public static void main(String args[]){

Showable.Message message=new TestNestedInterface1();//здесь

сообщение.msg();

}

}

ВЫВОД:

hello nested interface

Пример вложенного интерфейса, объявленного внутри класса

Давайте посмотрим, как мы можем определить интерфейс внутри класса и как мы можем получить к нему доступ.

ПРОГРАММА 10: Пример вложенного интерфейса, объявленного внутри класса

CODE:

класс А{

интерфейс Сообщение{

void msg();

}

}

класс TestNestedInterface2 реализует A.Message{

public void msg(){System.out.println("Привет, вложенный интерфейс");}

public static void main(String args[]){

A.Message message=new TestNestedInterface2();//здесь

сообщение.msg();

}

}
OUTPUT:

Привет, вложенный интерфейс

1. До JDK 8 интерфейс не мог определить реализацию. Теперь мы можем добавить реализацию по умолчанию для методов интерфейса. Эта реализация по умолчанию имеет специальное назначение и не влияет на назначение интерфейсов.

ПРОГРАММА 11:

КОД:

// Java-программа, показывающая, что интерфейсы могут

// есть методы из JDK 1.8 и выше

интерфейс In1

{

final int a = 10;

по умолчанию void display()

{

System.out.println("hello");

}

}

// Класс, реализующий интерфейс.

класс TestClass реализует In1

{

// Код драйвера

public static void main (аргументы String[])

{

TestClass t = новый TestClass();

т.дисплей();

}

}

ВЫВОД:

привет

2. Еще одна функция, добавленная в JDK 8, заключается в том, что теперь мы можем определять статические методы в интерфейсах, которые можно вызывать независимо без объекта. Примечание: эти методы не наследуются.

ПРОГРАММА 12:

КОД:

// Программа на Java, чтобы показать, что интерфейсы могут

// есть методы из JDK 1.8 и выше

интерфейс In1

{

final int a = 10;

static void display()

{

System.out.println("hello");

}

}

// Класс, реализующий интерфейс.

класс TestClass реализует In1

{

// Код драйвера

public static void main (аргументы String[])

{

In1.отображение();

}

}

ВЫВОД:

привет

ПРОГРАММА 13: программа на Java для демонстрации интерфейсов на реальном примере.

КОД:

Имя файла:Main.java

// Java-программа для демонстрации

// реальный пример интерфейсов

импорт java.io.*;

интерфейс Автомобиль {

// все это абстрактные методы.

void changeGear(int a);

void speedUp(int a);

void applyBrakes(int a);

}

класс Велосипед орудия Транспортное средство{

int скорость;

внутреннее снаряжение;

// для переключения передачи

@Override

public void changeGear(int newGear){

Шестерня = новая Шестерня;

}

// увеличить скорость

@Override

public void speedUp(int increment){

скорость = скорость + приращение;

}

// для уменьшения скорости

@Override

public void applyBrakes(int decrement){

скорость = скорость — уменьшение;

}

public void printStates() {

System.out.println("скорость: " + скорость

+ " шестерня: " + шестерня);

}

}

класс Велосипед орудия Автомобиль {

int скорость;

внутреннее снаряжение;

// для переключения передачи

@Override

public void changeGear(int newGear){

Шестерня = новая Шестерня;

}

// увеличить скорость

@Override

public void speedUp(int increment){

скорость = скорость + приращение;

}

// для уменьшения скорости

@Override

public void applyBrakes(int decrement){

скорость = скорость — уменьшение;

}

public void printStates() {

System.out.println("скорость: " + скорость

+ " шестерня: " + шестерня);

}

}

класс Основной {

public static void main (String[] args) {

// создание объекта Bicycle

// делаем какие-то операции

Bicycle bike = new Bicycle();

велосипед.changeGear(2);

велосипед.speedUp(3);

велосипед.applyBrakes(1);

System.out.println("Текущее состояние велосипеда:");

велосипед.printStates();

// создание экземпляра велосипеда.

Bike bike = new Bike();

велосипед.changeGear (1);

велосипед.speedUp(4);

велосипед.applyBrakes(3);

System.out.println("Текущее состояние велосипеда:");

велосипед.printStates();

}

}

ВЫВОД:

Bicycle present state :
speed: 2 gear: 2
Bike present state :
speed: 1 gear: 1

Спасибо.