java问题请个位师傅指点指点谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:12:08
程序是下面这样的 请问在main函数里面 为什么可以method1(c);这样写 而不是c.method1(c); 这样呢?
class A
{
void fn1()
{

}
}
abstract class B
{
abstract void fn2();
}
class C extends A
{
B getB()
{
return new B()
{
public void fn2()
{

}
};
}
}
class Tset
{
static void method1(A a)
{
a.fn1();
}
static void merhod2(B b)
{
b.fn2();
}
public static void main(String[] args)
{
C c=new C();
method1(c);
methou2(c.getB());
}
}

其实应该是
this.method1(c);
不过this可以省略!

method1(c)是调用Test.method1(A a)方法,因为同在一个类中,又是静态方法所以可以直接调用.
c.method1(c)是指调用C类中的method1(C c)方法,C类中没有这个方法.

因为main方法和method1在同一个类Tset里

因为在同一个类里可直接调用.