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

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

作者: Queenie的学习笔记 | 来源:发表于2019-06-16 11:59 被阅读0次

    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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ueowfctx.html