public class Circle {
private int radius;
public Circle(int r){
radius=r;
}
public double getArea(){
return Math.PI*Math.pow(radius, 2);
}
public class Cylinder {
private Circle circle;
private int height;
public Cylinder(int r,int h){
Circle circle=new Circle(r);
height=h;
}
public double getVolume(){
return Math.PI*Math.pow(radius, 2)*height;
}
}
}
public class Test {
public static void main(String[] args) {
Cylinder c1=new Cylinder(5,5);//为什么这样不行??
System.out.println();
}
}
------最佳解决方案--------------------------------------------------------
建议楼主在Cylinder里给circle赋值时,不要再定义了,即把:
Circle circle=new Circle(r);
改成:
circle=new Circle(r);
否则,类里定义的
private Circle circle;
就不会赋值了,这个circle 不是构造函数里的那个circle!
------其他解决方案--------------------------------------------------------
楼上正解,实例化内部类要这样写:
Circle c =new Circle();
Circle.Cylinder cy=c.new Cylinder(5,5);
当然把Cylinder声明为static也可以,不过需要顺便把radius也声明为static就行。
------其他解决方案--------------------------------------------------------
对你的代码是有参数的,我拿来实验的时候顺手改了下构造函数,这个无关紧要的啊,你加个参数就行。
------其他解决方案--------------------------------------------------------
Cylinder是个非静态的内部类
改成public static class Cylinder
------其他解决方案--------------------------------------------------------
如果这样的话那在Cylinder类中的radius不是不能用private了??
但是类中的变量是要private封装的吧
------其他解决方案--------------------------------------------------------
我试了下,还是不行,在Circle c =new Circle();报错了,Circle类中构造方法Circle是有参数的吧
------其他解决方案--------------------------------------------------------
package com.briup.test08;
public class Test {
public static void main(String[] args) {
//Cylinder c1=new Cylinder(5,5););//为什么这样不行??
//是可以的,改成下面这样就行了
Circle c =new Circle(5);
Circle.Cylinder cy=c.new Cylinder(5,5);
}
}
------其他解决方案--------------------------------------------------------
我里个去! 类能嵌套类吗?