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

来源:8-10 Java 中的 static 使用之静态初始化块

Saber专属

2016-11-13 20:33

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();为什么不行
    }
}


写回答 关注

4回答

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

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

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

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

    Saber专...

    确实,不过其他两个变量要改。

    2016-11-14 17:32:24

    共 1 条回复 >

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

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

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

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

    Saber专...

    恩恩,是的,没编辑好\(^o^)/~

    2016-11-14 17:33:28

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530554 学习 · 6091 问题

查看课程

相似问题