Java 报错:“无法从静态上下文中引用非静态 变量 this”

2019-06-16  本文已影响0人  Queenie的学习笔记

1. 课后练习:自定义一个apple类,在主类SetApple中创建实例并调用方法

2. 源码:

// 程序的文件名为 SetApple.java
public class SetApple
{
    public static void main(String[] args) 
    {
        apple a = new apple();          //创建apple类
        a.appleweight = 0.5;            //实例变量赋值
        System.out.println("苹果的重量为1两");
        System.out.println(a.bite());   //调用实例方法

        a.appleweight = 5;
        System.out.println("苹果的重量为1斤");
        System.out.println(a.bite());   //调用实例方法
    }

    //自定义类
    class apple
    {
        //属性
        long applecolor;        //对应苹果的颜色
        double appleweight;     //苹果的颜色
        boolean eatup;          //是否吃完

        //类方法
        public boolean bite()
        {
            if(appleweight < 1)
            {
                System.out.println("苹果已经吃完了!哈哈");
                eatup = true;
            }
            else
            {
                System.out.println("苹果吃不下了!难过");
                eatup = false;
            }

            return eatup;
        }
    }
}

3. 运行结果

报错!


图片.png

4. 原因

问题在于我把 class apple 放到了public class SetApple 内部,apple 成了SetApple 的非静态内部类,属于SetApple 的一个成员,在静态方法main中不能访问非静态的成员,也就不能直接new apple (),只能通过外部类的对象访问。

5. 解决办法

把class apple 放到 SetApple 类外面。

参考文章:https://www.cnblogs.com/bigbigbigo/articles/7104506.html

上一篇下一篇

猜你喜欢

热点阅读