首页 > 解决方案 > 为什么我的构造函数出现非静态变量错误?

问题描述

我无法编译我的代码。我盯着这段代码看了好几个小时,我不知道出了什么问题。

这是我的代码: 代码

public class test{

    class University {
        private String name;
        private int enrollment;
        private boolean urban;

        public University() {
            name = "TSU";
            enrollment = 8000;
            urban = true;
        }

        public University(String name, int enrollment, boolean urban) {
            this.name = name;
            this.enrollment = enrollment;
            this.urban = urban;
        }

        public int getEnrollment() {
            return enrollment;
        }

        public void setEnrollment(int n) {
            if (n > 0) {
                n = n;
            } else {
                n = 0;
            }
        }
    }

    public static void main(String[] args) {
        University tsu = new University();
        University vu = new University("Vandy", 5800, true);
        University mt = new University("MTSU", 7000, false);

        tsu.setEnrollment(8500);
        vu.setEnrollment(60000);

        System.out.println(tsu.name + "\'s enrollment is " + tsu.getEnrollment());
    }
}

这是我不断收到的错误: 错误

test.java:36: error: non-static variable this cannot be referenced from a static context
    University tsu = new University();
                     ^

预先感谢您的帮助!

标签: javacompiler-errorsstaticnon-static

解决方案


您的代码定义University为非静态类(有关更详细的说明,请参阅嵌套类)。您应该改为声明University如下:

static class University {
    // ...
}

推荐阅读