当前位置: 代码迷 >> Java相关 >> java 新手小问题,望赐教
  详细解决方案

java 新手小问题,望赐教

热度:125   发布时间:2011-03-28 18:53:49.0
java 新手小问题,望赐教
class A
{
    static void area()
    {
        System.out.print("let us go!");
    }
}

public class B extends A
{
   
    static void area()
    {
        System.out.print("Hello World!");
    }
    public static void main(String args[])
    {
        A b=new B();//B b=new B();
        b.area();
    }
}


红线所示,输出结果分别是let us go!和Hello World!
为什么不同呢???
搜索更多相关的解决方案: java  

----------------解决方案--------------------------------------------------------
把static去掉,通过动态绑定来调用方法
静态方法直接用类名.方法名来调用

[ 本帖最后由 xng1234 于 2011-3-28 19:24 编辑 ]
----------------解决方案--------------------------------------------------------

public class C extends A
{
   
    static void area()
    {
        System.out.print("Hello World!");
    }
    public static void main(String args[])
    {
       C.area();
      
    }
}

class A
{
    static  void area()
    {
        System.out.print("let us go!");
    }
}在Java当中覆盖方法需要类型一样,而且在静态方法只能调用静态方法,其调用格式为类名.方法名
----------------解决方案--------------------------------------------------------
以上代码运行结果为:Hello World! 完成了覆盖方法的用意!
----------------解决方案--------------------------------------------------------
因为B继承A,所以先打印出let us go!,再打印Hello World!。
你只要B里重写area()方法


----------------解决方案--------------------------------------------------------
我是新手,求赐教。QQ61643380
----------------解决方案--------------------------------------------------------
回复 6楼 WilsonGZ
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-06 12:22:09
qq8801103

来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:412
专家分:340
注 册:2009-10-8
  得分:0 
A b=new B()   如果是这样的话   说明b是一个上转型对象  那么当调用方法area的时候就是调用A中的方法  此时不会去调用B中的方法
----------------解决方案--------------------------------------------------------
哈哈
----------------解决方案--------------------------------------------------------
  相关解决方案