读书人

请大家进来看一下,书上所说的这个标题

发布时间: 2012-01-26 19:40:46 作者: rapoo

请大家进来看一下,书上所说的这个标题,是不是错误的?
class A
{
static void qq()
{
System.out.println( "第一个qq ");
}
public static void main(String args[])
{
B b=new B();
b.qq();
}
}
class B extends A
{
static void qq()
{
super.qq();//各位,书上说子类不能覆盖超类中的static方法,是不是说错了啊/我这个程序中覆盖了超类中的qq方法了只啊
//但是,想问一下,在这个地方如何再调用超类的中qq静态方法?
System.out.println( "第二个qq ");
}
}

[解决办法]
你这不叫覆盖,Java会认为子类里又写了一个和父类重名的静态函数而已,和父类那个是独立的,父子各有一个,你想用哪个都可以。
[解决办法]
//但是,想问一下,在这个地方如何再调用超类的中qq静态方法?
把super.qq()改成A.qq()就可以了.
class A
{
static void qq()
{
System.out.println( "第一个qq ");
}
public static void main(String args[])
{
B.qq();//这里不new也行,因为是静态方法.
A.qq();
}
}
class B extends A
{
static void qq()
{
A.qq();
System.out.println( "第二个qq ");
}
}
[解决办法]
发表一下:
父类static方法,只能在子类用static方法覆盖。
父类非static方法,只能在子类用非static方法覆盖。
static方法是属于类的,可以通过“类名.static成员名”来调用。
非static方法是属于对象的,是通过对象来调用。
[解决办法]
书没错

读书人网 >J2SE开发

热点推荐