Интерфейс и расширение - PullRequest
       38

Интерфейс и расширение

0 голосов
/ 01 октября 2019

Возникли проблемы с тем, как использовать следующий код или, если вообще возможно. Я новичок в этом. У меня есть следующее:

variables.java

public interface variables extends library{
     public int func1(String a, String b);
     public int func2(String a, String b); 
}

CallVariables.java

public CallVariables extends variables{
    String hi = "Hi";
    String by = "Bye";
    //Then here somehow call my variables.java and be able to use it...
}

main.java

// Now, here I want to be able to actually call the first or either the second .java class.
// Is this possible? If yes, then how? 

Я хотел бы знать, возможно ли это, и просьба включить и пример, если можно.

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Интерфейсы объявляются путем указания ключевого слова «интерфейс». Например:

interface MyInterface
{
   /* All the methods are public abstract by default
    * As you see they have no body
    */
   public void method1();
   public void method2();
}

Пример интерфейса в Java

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

Класс реализует интерфейс, но интерфейс расширяет другой интерфейс.

interface MyInterface
{
   /* compiler will treat them as: 
    * public abstract void method1();
    * public abstract void method2();
    */
   public void method1();
   public void method2();
}
class Demo implements MyInterface
{
   /* This class must have to implement both the abstract methods
    * else you will get compilation error
    */
   public void method1()
   {
    System.out.println("implementation of method1");
   }
   public void method2()
   {
    System.out.println("implementation of method2");
   }
   public static void main(String arg[])
   {
    MyInterface obj = new Demo();
    obj.method1();
   }
}

Выходные данные:

implementation of method1

Надеюсь, это немного больше прояснило работу класса с интерфейсом.

1 голос
/ 01 октября 2019

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

interface Library{}
//First variables.java:
     interface Variables extends Library{
         public int func1(String a, String b);
         public int func2(String a, String b); 
    }

//Second call Variables.java
     class CallVariables implements Variables{
         String hi = "Hi";
         String by = "Bye";
         //Then here somehow call my variables.java and be able to use it...
        @Override
        public int func1(String a, String b) {
            // TODO Auto-generated method stub
            System.out.println("func1 says :"+hi);
            return 1;
        }
        @Override
        public int func2(String a, String b) {
            // TODO Auto-generated method stub
            System.out.println("func2 says :"+by);
            return 2;
        }
     }
//Third main.java
     //Now, here I want to be able to actually call the first or either the second .java class. 
    // Is this possible? If yes, then how? 
     public class Main{
        public static void main(String[] args) {
            Variables variables = new CallVariables();
            variables.func1("a", "b");
            variables.func2("c", "d");
        }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...