2013-10-24 88 views
1

我對接口有問題。如果我在Eclipse中編寫下面的代碼片段,爲什麼在編寫代碼時不給出錯誤,以及它如何獲取字符串類的所有方法?如何java接口可以對象類的方法

public class Test{ 
    public static void main(String args[]){ 
     TestI ti = null; 
     ti.toString(); 
    } 
} 

interface TestI 
{} 
+3

'的toString()'和'Object'如果正在添加這是一個問題 – 2013-10-24 20:01:09

+0

任何實現的'TestI'必須是一個具體的類。任何具體的類都必須擴展Object。 –

+0

你編譯過這段代碼嗎? 'string'應該是'String'。你運行它了嗎? 'null.toString()'會拋出一個'NullPointerException'。 –

回答

0

TI是一個對象和對象具有列表功能 -

編號:Object

+0

'ti'是一個參考。在那裏引用一個'null',並且絕對不指向一個對象。 – Cruncher

+0

正確...因此它不會給出編譯時錯誤。但肯定會給運行時間。 – ajc

1

所有類都默認擴展Object類隱式。並且Object類有toString()方法。

但在運行時將會是java.lang.NullPointerException

+0

一個對象有'toString()'。但是'null'並不是他設置'ti'的。 – Cruncher

+0

@Cruncher但eclipse不知道「在編寫代碼時」 – clcto

+0

@clcto的權利,這是一個運行時錯誤。 – Cruncher

0

你期望它給予什麼錯誤?

接口是引用類型,因此當您定義接口TestI時,可以將其用作數據類型。 (TestI ti = null)

接口隱式聲明與Object類中聲明的每個公共實例方法相對應的公共抽象成員方法,除非顯式聲明具有相同簽名,相同返回類型和兼容throws子句的方法通過那個接口。 - 這意味着你可以調用Object類的任何方法,除非它在你的接口中聲明。它不是從Object類繼承的。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.2

相關問題