2011-08-26 56 views
1

因此,我在尝试解密任务时遇到了一些问题,它的措辞如下:Java中的接口和方法?

“在c:\ myjava文件夹下创建接口文件Animalize.java。声明方法myLanguage() (ii)创建三个不同的类Dog.java Cat.java和Lion.java,并让那些实现Animailize接口,这意味着每个类都需要(iii)创建一个类AnimalTest.java并在该类的主要方法中实例化其他三个创建的类并调用每个类的方法

然后保存并编译通过给出javac Animalize.java Cat.java D命令提示符下的og.java Lion.java AnimalTest.java命令。使用命令java AnimalTest运行确保没有错误并修复(如果有的话)。将答案写入(A)在java注释中顶部的同一个文件AnimalTest.java中。

提示:Animalize接口将具有方法声明等,

public String myLanguage(); 

甲Cat类将由第一具有类定义

public class Cat implements Animalize 

一条直线,然后具有方法

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

在Anima中添加对应于其他方法的其他方法。丽泽接口”

我创建的所有上述规定的文件,用下面的代码:

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(); 
        ^

我与这些周围搞砸了不少,似乎并不能找出问题,否则即使我做的分配完全正确。除了这些错误,在任何文件中是否有任何看起来完全错误的内容?我甚至不知道从哪里开始。感谢任何能够帮助我的人!

+1

您需要阅读'interface'声明的语法。这将明确为什么你会看到这些错误信息。 – dlev

+0

正如dlev提到的,你需要做一些背景阅读,试试[here](http://download.oracle.com/javase/tutorial/)作为一个起点,特别是接口部分,如下所示。 – PJL

回答

0

你有你的main()方法中的变量,你已经声明“公共静态”。局部变量(方法内部的变量)不能被声明为公共或静态。

0

你的代码有一堆问题,我不能做你的功课。首先@Adithya Surampudi是对的,一个界面不能有主要的方法。其次,该方法myLanguage将无法​​正常工作:

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

第三,你没有按照要求#3。您的主要方法应在AnimalizeTest中定义,而不是在Animalize中定义。只是一些提示...

0

好吧,以便为您节省一些痛苦,因为您继续编写代码。接口提供了一个实现者必须遵守的合同。在Java中,关键字Interface是一组没有实现的方法及其签名。这与可能提供实现的抽象类不同。方法签名被称为合约,返回类型加参数。

您不能像其他人所说的那样在界面中拥有主体。当你有一个遵守System.out的合同时,并不是你如何取回字符串的信息。它所做的是将一个字符块放到类似于String的位置。

0
  • 接口中不允许使用静态修饰符。它可以是抽象的或公共的。

    public static void main (String a[]) // wrong 
    
    public void main (String a[]) // correct 
    
  • 接口只允许方法签名。

正确的实现可以是这样的。

 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(); 

      } 
     }