java问题,无法从静态上下文中引用非静态变量this
发布网友
发布时间:2024-10-13 01:45
我来回答
共2个回答
热心网友
时间:2024-11-17 15:26
不能在一个类的main中直接创建其内部类,内部类的创建需要实例化外部类才能使用,而static方法是不能在未实例化外部类(homework8)的情况下使用内部类(CCircle),
可以这样修改:
public class homework8 {
public static void main(String[] args) {
CCircle cir=new CCircle(2.0);
System.out.println(cir.area());
}
}
class CShape
{
public double area()
{
return 0.0;
}
}
class CCircle extends CShape
{
double pi=3.14;
double radius;
public CCircle(double r)
{
radius=r;
}
public double area()
{
return pi*radius*radius;
}
}
哈哈,你也许看出来了,没错,就只是从里面放到外面,这个可以在think in java 的polymorphism(多态)中的apply 类中得到解释。
by the way ,think in java 最好看英文哦,里面的内容很有用,反正我是看了之后才深刻理解了一些设计模式。
热心网友
时间:2024-11-17 15:24
public class homework8 {
class CShape
{
public double area()
{
return 0.0;
}
}
class CCircle extends CShape
{
double pi=3.14;
double radius;
public CCircle(double r)
{
radius=r;
}
public double area()
{
return pi*radius*radius;
}
}
public static void main(String[] args) {
homework8 homework = new homework8();
System.out.println(homework.new CCircle(2.0).area());
}
}
你可以这样调用