Java中的接口和方法?

时间:2011-08-26 17:03:21

标签: java methods

所以,我在尝试破译一项任务时遇到了一些问题,其措辞如下:

“在c:\ myjava文件夹下创建一个接口文件Animalize.java。声明一个方法myLanguage(),它不带参数但返回一个String类型。声明你选择的另一种方法。(ii)创建三个不同的类Dog .java Cat.java和Lion.java让它们实现Animailize接口。这意味着每个类都需要在Animalize接口中声明方法。(iii)创建一个类AnimalTest.java并在该类的main方法实例化中创建了另外三个类,并为每个类调用方法。

然后通过在命令提示符下给出javac Animalize.java Cat.java Dog.java Lion.java AnimalTest.java命令来保存和编译。使用命令java AnimalTest运行确保没有错误并修复(如果有)。将(A)的答案写在Java评论中顶部的同一文件AnimalTest.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 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

你的main()方法中有一个你声明为“public static”的变量。局部变量(方法内部的变量)不能声明为public或static。

答案 2 :(得分:0)

您的代码中存在许多问题,我无法完成您的作业。首先@Adithya Surampudi是对的,界面不能有主要方法。其次,方法myLanguage不起作用:

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

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

答案 3 :(得分:0)

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

你不能像其他人所说的那样拥有主界面。当你有一个遵守System.out的合同时,你不会得到返回String的信息。它的作用是将一个字符块放在碰巧类似String的位置。

答案 4 :(得分:0)

  • 接口中不允许使用static修饰符。它可以是抽象的或公开的。

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

             }
         } 
相关问题