问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

在main函数里面用类名调用为什么在这里不行

package com.imooc.Java;

public class Imooc_1_10 {
    String name; // 声明变量name
    String sex; // 声明变量sex
    static int age;// 声明静态变量age
    
    // 构造方法
    public  Imooc_1_10() { 
        System.out.println("通过构造方法初始化name");
        name = "tom";
    }
    
    // 初始化块
    { 
        System.out.println("通过初始化块初始化sex");
        sex = "男";
    }
    
    // 静态初始化块
        static{ 
        System.out.println("通过静态初始化块初始化age");
        age = 20;
    }
    
    public void show() {
        System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
    }
    
    public static void main(String[] args) {
        
        // 创建对象
        Imooc_1_10 hello = new Imooc_1_10();
        // 调用对象的show方法
        Imooc_1_10.show();//这里是用对象名来调用,用HelloWorld.show(); 类名调用HelloWorld.show();为什么不行
    }
}


提问者:Saber专属 2016-11-13 20:33

个回答

  • MG_J
    2016-11-13 21:22:29
    已采纳

    用类调用非静态方法是不可以的

  • 慕函数4910142
    2016-11-14 14:54:05

       public void show()改为 public static void show()就可以调用了,把非静态方法改为静态方法就OK

  • 玻尔的波
    2016-11-14 08:23:50

    非静态方法不能使用类名调用。

  • 我的水木年华
    2016-11-13 21:09:29

    show方法为非静态方法,不能直接在静态主方法内使用,但可以通过创建对象来调用。这里你的对象不是hello吗?应该是hello.show();才对啊