首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个java的小疑点,刚刚学java不久,问的有关问题可能有点白痴,各位帮帮忙

2012-12-22 
一个java的小问题,刚刚学java不久,问的问题可能有点白痴,各位帮帮忙public class Circle {private int rad

一个java的小问题,刚刚学java不久,问的问题可能有点白痴,各位帮帮忙

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就行。
[其他解释]
引用:
引用:
楼上正解,实例化内部类要这样写:
Circle c =new Circle();
Circle.Cylinder cy=c.new Cylinder(5,5);
当然把Cylinder声明为static也可以,不过需要顺便把radius也声明为static就行。
我试了下,还是不行,在Circle c =new Circle();报错了,Cir……

对你的代码是有参数的,我拿来实验的时候顺手改了下构造函数,这个无关紧要的啊,你加个参数就行。
[其他解释]
Cylinder是个非静态的内部类
改成public static class Cylinder
[其他解释]
引用:
Cylinder是个非静态的内部类
改成public static class Cylinder

如果这样的话那在Cylinder类中的radius不是不能用private了??
但是类中的变量是要private封装的吧
[其他解释]
引用:
楼上正解,实例化内部类要这样写:
Circle c =new Circle();
Circle.Cylinder cy=c.new Cylinder(5,5);
当然把Cylinder声明为static也可以,不过需要顺便把radius也声明为static就行。

我试了下,还是不行,在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);  

}

[其他解释]
我里个去! 类能嵌套类吗?


[其他解释]
你必须先声明外面这个类的对象,才能生成里面这个类的对象啊,Circle c =new Circle();或者为这个类增加个无参数构造器
[其他解释]
java的内部类创建对象的话,必须先创建外部类对象,然后外部类点取内部类对象。

热点排行