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