Интерфейсы и методы в Java? - PullRequest
1 голос
/ 26 августа 2011

Итак, у меня возникла небольшая проблема при попытке расшифровать назначение, оно сформулировано следующим образом:

"Создайте файл интерфейса Animalize.java в папке c: \ myjava. Объявите методmyLanguage (), который не принимает аргументов, но возвращает тип String. Объявите еще один метод по вашему выбору. (ii) Создайте три различных класса Dog.java Cat.java и Lion.java и дайте им реализовать интерфейс Animailize. Это означает, что каждый изу этого класса должны быть методы, объявленные в интерфейсе Animalize. (iii) Создайте класс AnimalTest.java и в основном методе этого класса создайте три других созданных класса и вызовите методы для каждого.

Затем сохраните искомпилируйте, введя команду javac Animalize.java Cat.java Dog.java Lion.java AnimalTest.java в командной строке. Запустите команду java AnimalTest Убедитесь, что ошибок нет, и исправьте, если они есть. Запишите ответ (A) в том же файлеAnimalTest.java вверху внутри комментариев java.

Подсказка: интерфейс Animalize будет иметьобъявление метода, например,

public String myLanguage();

Класс Cat реализует Animalize, сначала имея строку в определении класса

public class Cat implements Animalize

, а затем метод

public String myLanguage()
{
            System.out.println(“Meow”);
}

Добавьте дополнительный метод, соответствующий вашему другому методу, в интерфейсе Animalize. "

Я создал все указанные выше файлы со следующим кодом:

Animalize :

public interface Animalize {
  public static void main (String args[]){
     public static String myLanguage();
     }
     }

Кошка :

      public class Cat implements Animalize
{
}

Собака :

        public class Dog
{
}

Лев :

        public class Lion
{
}

AnimalTest :

      class AnimalTest{

public class Dog implements Animalize{
public String myLanguage(){
return
System.out.println("Woof");
}
}

}

Когда я компилирую все классы, как указано выше, я получаю следующие ошибки в командной строке:

Animalize.java:3: illegal start of expression
public static String myLanguage();
^

Animalize.java:3: illegal start of expression
public static String myLanguage();
       ^

Animalize.java:3: ';' expected
public static String myLanguage();
                    ^

Я с этим довольно много разобрался и, похоже, не могу понять проблему, или даже если я делаюзадание совершенно верно.Помимо ошибок, есть ли что-нибудь в файлах, что выглядит абсолютно неправильно?Я даже не знаю, с чего начать.Спасибо всем, кто может мне помочь !!

Ответы [ 5 ]

3 голосов
/ 26 августа 2011

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

http://download.oracle.com/javase/tutorial/java/IandI/createinterface.html

0 голосов
/ 26 августа 2011
  • Статический модификатор не допускается в интерфейсе.Он может быть абстрактным или открытым.

    public static void main (String a[]) // wrong
    
    public void main (String a[]) // correct
    
  • В интерфейсе допускаются только сигнатуры метода.

Правильная реализация может быть такой.1012 *

       public interface Animalize {
                                    public String myLanguage();
                                  }

         public class Cat implements Animalize
         {
             public String myLanguage()
             {

             }
         }

         public class Dog implements Animalize
         {
             public String myLanguage()
             {

             }
         } 

         public class Lion implements Animalize
         {
             public String myLanguage()
             {

             }
         } 


         public class AnimalTest
         {
             public static void main (String a[])
             {
               Cat cat=new Cat();
               cat.myLanguage();
               Dog dog=new Dog();
               dog.myLanguage();

             }
         } 
0 голосов
/ 26 августа 2011

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

Вы не можете иметь main в интерфейсе, как заявили другие.Когда у вас есть контракт на соблюдение System.out, вы не получаете информацию, которая была бы для строки.То, что он делает, это помещает блок символов, которые напоминают строку.

0 голосов
/ 26 августа 2011

В вашем коде куча проблем, и я не могу выполнить вашу домашнюю работу.Во-первых, @ Adithya Surampudi прав, у интерфейса не может быть основного метода.Во-вторых, метод myLanguage не будет работать:

public String myLanguage() {
    return System.out.println("Woof");
    // instead do something like this
    return "Woof";
}

В-третьих, вы не выполнили требование № 3.Ваш основной метод должен быть определен в AnimalizeTest, а не в Animalize.Просто несколько подсказок ...

0 голосов
/ 26 августа 2011

В вашем методе main () есть переменная, которую вы объявили "public static". Локальные переменные (внутри методов) не могут быть объявлены как публичные или статические.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...