Рубрики

Интерфейсы и наследование в Java

Предварительные условия: интерфейсы в Java , Java и множественное наследование

Класс может расширять другой класс и / может реализовывать один и более интерфейсов.

// Java-программа для демонстрации того, что класс может
// реализовать несколько интерфейсов

import java.io.*;

interface intfA

{

    void m1();

}

  

interface intfB

{

    void m2();

}

  
// класс реализует оба интерфейса
// и обеспечивает реализацию метода.

class sample implements intfA, intfB

{

    @Override

    public void m1()

    {

        System.out.println("Welcome: inside the method m1");

    }

  

    @Override

    public void m2()

    {

        System.out.println("Welcome: inside the method m2");

    }

}

  

class GFG

{

    public static void main (String[] args)

    {

        sample ob1 = new sample();

  

        // вызов метода реализован

        // внутри класса.

        ob1.m1();

        ob1.m2();

    }

}

Выход;

Welcome: inside the method m1
Welcome: inside the method m2

Наследование интерфейса: Интерфейс может расширять другой интерфейс.

// Java-программа для демонстрации наследования в
// интерфейсы.

import java.io.*;

interface intfA

{

    void geekName();

}

  

interface intfB extends intfA

{

    void geekInstitute();

}

  
// класс реализует оба интерфейса и предоставляет
// реализация метода.

class sample implements intfB

{

    @Override

    public void geekName()

    {

        System.out.println("Rohit");

    }

  

    @Override

    public void geekInstitute()

    {

        System.out.println("JIIT");

    }

  

    public static void main (String[] args)

    {

        sample ob1 = new sample();

  

        // вызов метода реализован

        // внутри класса.

        ob1.geekName();

        ob1.geekInstitute();

    }

}

Выход:

Rohit
JIIT

Интерфейс также может расширять несколько интерфейсов.

// Java-программа для демонстрации множественного наследования
// в интерфейсах

import java.io.*;

interface intfA

{

    void geekName();

}

  

interface intfB 

{

    void geekInstitute();

}

  

interface intfC extends intfA, intfB 

{

    void geekBranch();

}

  
// класс реализует оба интерфейса и предоставляет
// реализация метода.

class sample implements intfC

{

    public void geekName()

    {

        System.out.println("Rohit");

    }

  

    public void geekInstitute()

    {

        System.out.println("JIIT");

    }

  

    public void geekBranch()

    {

        System.out.println("CSE");

    }

      

    public static void main (String[] args)

    {

        sample ob1 = new sample();

  

        // вызов метода реализован

        // внутри класса.

        ob1.geekName();

        ob1.geekInstitute();

        ob1.geekBranch();

    }

}

Выход:

Rohit
JIIT
CSE

Почему множественное наследование не поддерживается через класс в Java, но это возможно через интерфейс?
Множественное наследование не поддерживается классом из-за неоднозначности. В случае интерфейса нет никакой двусмысленности, потому что реализация метода (ов) обеспечивается классом реализации до Java 7. От Java 8 интерфейсы также имеют реализации методов. Таким образом, если класс, реализующий два или более интерфейсов, имеющих одинаковую сигнатуру метода с реализацией, он также обязан реализовать метод в классе. За подробностями обращайтесь к Java и множественному наследованию .

Эта статья предоставлена Nitsdheerendra . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Интерфейсы и наследование в Java

0.00 (0%) 0 votes