假设有类Person在a包中,包含方法public void show(){};类Man中有方法public void change(){Person p = null;p.show}为什么在change方法中直接可以用p调用show方法,不是说非静态方法必须用new对象来调用吗?求教知道的给解释解释,

解决方案 »

  1.   

    非静态方法的调用需要一个指向该类具体实例的变量。p 就是一个指向 Person 类的具体实例的变量。
      

  2.   


    "非静态方法必须用new对象来调用" 这句话的应该改成"非静态方法必须用对象来调用"。这个对象可能是你自己new出来的,也可能为别人帮你new好了传给你的。但是在调用非静态方法时,必须是有对象的。 你写的 p=null,p.show(); 是可以编译通过,但是是空指针错误。