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