2016-09-02 123 views
-2

所以我對Java有點新鮮。我剛剛介紹的接口,我必須創建一個返回接口Chassis如何聲明一個返回接口實例的方法

下面的實例的方法是代碼:

public interface Chassis { 
    public String Chassis = "Chassis"; 

    public static void main(String[] args) { 
     public String getChassisType() { 
      return Chassis; 
     }  

的問題是,我不斷收到錯誤抽象方法不能有一個身體(如blockquote所示),但我沒有宣佈我的方法是抽象的。

什麼似乎是問題?

+1

您在另一個方法中有方法聲明。您需要分別定義每種方法。 –

+0

我該怎麼做呢?通過在接口之外聲明getChassis類型? –

+0

看到我的答案.. –

回答

-1

此代碼根本不起作用。主要方法僅適用於類,不適用於接口。

編輯:如下所述,答案是不正確的。但是在方法中有一個方法仍然不起作用。查看其他答案。

+2

在Java 8中,您可以將「main」添加到界面,但我認爲這不是一個好主意。 –

+0

接口中的主要公共靜態void main?真?? –

+0

我剛剛試過,只是爲了檢查,它的工作原理與你所期望的一樣o_O –

1

你有兩個問題,你不能在另一個方法中放置一個方法,也不能在Java中的接口中定義這樣的方法。在Java 8,你可以做到這一點

public interface Chassis { 

    String Chassis = "Chassis"; 

    default String getChassisType(){ 
     return Chassis; 
    } 
} 

我不會定義public static void main的接口內。儘管現在允許,但大多數開發人員會發現這種混淆。請參閱@Jürgen的回答,因爲這是最有經驗的開發人員會說我相信的。

我會創造像

public class Main { 
    public static void main(String... args) { 
     // an anonymous subclass so you have something to create/call. 
     System.out.println(new Chassis(){}.getChassisType()); 
    } 
} 
+0

像這樣定義它會產生一個錯誤,它需要我創建一個main.java類,因爲main被定義爲public –

+0

@MichaelM。正確的是,所有公共頂級課程都必須在自己的文件中。在一個普通的Java項目中,您將擁有數百個(如果不是數千個)文件。 –

+1

@PeterLawrey:不能同意更多,這是混亂。 –

0

另一個類的接口是一種抽象的。它不能被實例化,它只能聲明方法和屬性而不定義。您只能在類中實現它,如果您在類中這樣做,則必須定義在接口中聲明的所有方法。需要定義一個主要方法來執行程序。所以它不應該放置在界面中。在下面更改您的代碼

public interface chassis 
{ 
String Chassis; 
public String chassis(); 
} 
public class example implements chassis 
{ 
public String chassis() 
{ 
Chassis="chassis"; 
return Chassis; 
} 
public static void main(String[] args) 
{ 
System.out.println(new example().getChassisType()); 
} 
} 
+0

我改變了它@BrandonIbbotson – dharan

+0

更好的是,1空間選項卡仍然有點讓我厭煩。 – byxor