我对接口有疑问。如果我在Eclipse中编写下面的代码片段,为什么在编写代码时不会出错,它是如何获取字符串类的所有方法的?
public class Test{
public static void main(String args[]){
TestI ti = null;
ti.toString();
}
}
interface TestI
{}
答案 0 :(得分:1)
默认情况下,所有类都隐式地扩展Object
类。 Object
类有toString()
方法。
但它在运行时将是java.lang.NullPointerException
。
答案 1 :(得分:0)
ti是一个Object和Object有列表函数 -
参考:Object
答案 2 :(得分:0)
您期望它给出什么错误?
接口是引用类型,因此在定义接口TestI时,可以将其用作数据类型。 (TestI ti = null)
接口隐式声明与Object类中声明的每个公共实例方法对应的公共抽象成员方法,除非该接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法。 - 这意味着除非在接口中声明,否则可以调用Object类具有的任何方法。它不是从Object类“继承”。
请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.2