黑马程序员技术交流社区

标题: 关于使用super调用父类方法出错,求解?? [打印本页]

作者: 梁志冰    时间: 2012-8-26 21:37
标题: 关于使用super调用父类方法出错,求解??
class Phone
{
public static void show()
{
  System.out.println("number");
}
}
class NewPhone extends Phone
{
public  void show()
{
    super.show();   //编译时报错???
       System.out.println("message");
    System.out.println("hehe");
}
}
class Demo5
{
public static void main(String[] args)
{
  NewPhone p=new NewPhone();
  p.show();
}
}

编译时出错,按理说,非静态调用静态是可以的呀,为什么会报错呢?

`}6{FCXT$4GKNHLLF)R1$7Q.jpg (12.1 KB, 下载次数: 567)

`}6{FCXT$4GKNHLLF)R1$7Q.jpg

作者: 夏天    时间: 2012-8-26 21:48
冰兄,先回复了再看题,等哥回答。。。
作者: 黑马杨晨    时间: 2012-8-26 21:50
jvm说的很清楚 了
作者: 唐见    时间: 2012-8-26 21:57
子类非静态方法不能覆盖父类的静态方法,只有静态方法才能覆盖静态方法

作者: 夏天    时间: 2012-8-26 21:57
其实这是一个 方法重写的错。  静态只能覆盖静态,你的show方法是不能被重写的。
作者: 黑马张强    时间: 2012-8-26 21:57
黑马杨晨 发表于 2012-8-26 21:50
jvm说的很清楚 了

为什么会报错呢
作者: 冯心程    时间: 2012-8-26 22:01
父类show是静态的 直接用类名就能引用
静态只能覆盖静态
你说的是非静态能“访问”静态 不是“覆盖 ”
冰哥知识学杂了
作者: 夏天    时间: 2012-8-26 22:01
方法重写必须要一模一样,如果你用eclipse编译的话,就会发现,报如下的错
                Multiple markers at this line
        - overrides Phone.show
        - This instance method cannot override the static method from Phone
而不是你标记的那一行。你标记的那一行 忽悠人了
作者: 夏天    时间: 2012-8-26 22:02
解决办法,你把子类的show名字改了就OK了。
作者: 黑马张强    时间: 2012-8-26 22:20
super调用静态的上下文,比如静态方法和静态成员变量 super可以调用的是父类的成员函数(即非静态的)和成员变量(即非静态的),需要调用父类的类函数和类变量则需要用父类名调用. 带static只能 super.show();改成a.show();
作者: 黑马-王康    时间: 2012-8-26 22:23
首先给您四个结论
1)
1.静态方法可以覆盖静态方法。
2.非静态方法可以覆盖非静态方法。
3.静态方法不可以覆盖非静态方法。
4.非静态方法不可以覆盖静态方法。
2)改正的方式:
要么修改NewPhone类的show函数名称;要么将此show()方法修改为静态的,同时注意不能用super来调用噢。
:sleepy:,希望能对你有帮助。
作者: 夏天    时间: 2012-8-26 22:35
黑马张强 发表于 2012-8-26 22:20
super调用静态的上下文,比如静态方法和静态成员变量 super可以调用的是父类的成员函数(即非静态的)和成员变 ...

回答错误~~
作者: 夏天    时间: 2012-8-26 22:37
小康康 发表于 2012-8-26 22:23
首先给您四个结论
1)
1.静态方法可以覆盖静态方法。

完全可以用super调用
作者: 夏天    时间: 2012-8-28 20:17
夏诗瑶 发表于 2012-8-26 22:37
完全可以用super调用

我看错你的回答了,静态里面是不能用super和this的。[color=Red]不好意思
作者: 夏天    时间: 2012-8-28 20:18
我看错你的回答了,静态里面是不能用super和this的。不好意思




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2