2013-11-24 74 views
1

我是Java的初學者,併爲問一個簡單的問題而道歉。我知道接口的概念。接口主要用於實現完全抽象並支持多繼承的功能,然後再鬆耦合。可以有抽象方法和靜態常量。它不能像Abstract類那樣實例化和類似。 Interface是一個類的藍圖,它代表了Is-A-Relationship。我在代碼的Interface部分做了什麼錯誤?

我自己只是嘗試這樣做樣本程序,

interface Printable{ 
void print(); 
} 
public class A implements Printable{ 
public void Print(){ 
    System.out.println("Prints.."); 
} 
public static void main(String args[]){ 
    A obj=new A(); 
    obj.print(); 
} 
} 

輸出是,

Compiling the source code.... 
$javac A.java 2>&1 
A.java:4: error: A is not abstract and does not override abstract method print() in   Printable 
public class A implements Printable{ 
^ 
A.java:10: error: cannot find symbol 
obj.print(); 
^ 
symbol: method print() 
location: variable obj of type A 
2 errors 

是什麼意思,A不是抽象的,不能重寫抽象方法的print()?

我在這裏做了什麼錯誤請有人能說我嗎?所以,我可以從我的錯誤中吸取教訓!

+4

打印方法應爲小寫 – DGomez

+2

Java **爲**區分大小寫。 「打印」和「打印」**不是**相同。 – Maroun

+0

@DGomez你應該作爲回答舉例說明。 –

回答

4
void print() 

VS

void Print() 

這是一個資本的錯誤。

你所得到的錯誤

A不是抽象的,不重寫抽象方法打印()

因爲abstract類可以實現一個interface沒有真正實現它定義的方法。

here

在接口上的部分,有人指出,實現接口必須實現所有的接口方法的類。但是,可以定義一個不實現所有接口方法的類,只要該類聲明爲抽象類。

錯誤消息的其他部分來自上述「大寫」錯誤。

+0

哦,我很抱歉,這個小錯誤,我沒有找到它。謝謝 ! –

+0

我提到了你提到的鏈接。它是什麼意思?它是如何看起來的?「當抽象類被子類化時,子類通常爲其父類中的所有抽象方法提供實現,但如果不是,則子類也必須聲明爲抽象類型。 –

+0

你還不清楚什麼?正如它在那裏說的那樣:你想要實例化的最終子類必須實現所有的接口方法和所有的抽象方法。這些可以在鏈中的超類中實現,但如果有任何抽象方法或未實現的方法,則必須使該類爲抽象類並提供另一個實現它們的子類。 –

0

的錯誤是很清楚

A.java:4: error: A is not abstract and does not override abstract method **print()** in   Printable 

正如你看到的方法是不print()Print()

0

請檢查您打印的法術()。它在接口中爲小寫