关于方法调用的问题
class Test0
{
public void print0()
{
System.out.print( "Hello ");
}
}
class Test1
{
public void print1()
{
System.out.print( "world! ");
}
}
class Test2 extends Test0
{
public void print2()
{
print0();
/*这里为什么可以直接调用,
而不用创建Test0的对象,
如Test0 a=new Test0;a.print0();*/
}
}
public class Test extends Test1
{
public static void main(String[] args)
{
print1();
/*这里调用为什么会报错??
必须Test1 a=new Test();a.print1();*/
}
}
------解决方案--------------------print2()可以调用print0()是因为print0()是Test2所继承的Test0的方法
虽然同样是继承,但main()方法中不能调用print1()方法是因为main()是static的,print1()是非static的。static的方法属于类的方法,而非static的方法属于对象的方法,在产生对象之前是不能调用的。
------解决方案--------------------问题1 ,Test2 extends Test0
得到的Test2为
Public Test2(){
public void print0(){...}
public void print2(){...}
}
这里内部调用当然没有问题,但是请注意,这里Test2并没有实例化。
在Test2中加入main方法
public static void main(String[] args)
{
Test2 a=new Test2();a.print2();
}
Test2继承自Test0,所以Test2中可以访问Test0的public/protected方法和字段,不能访问private方法和字段。另一方面,如果方法不是static的,就要先实例化后才能访问。
main是static的方法,所以只能直接访问加有本类static的方法,对于非static的也一定要实例化后才能访问。