Ring ring=new Ring(5,8,”red”);
改成
Ring ring=new Ring();
修改后编译运行,此时有错误发生.
如果类中没有定义构造函数,系统会自动生成一个没有参数也没有赋初值的功能的构造函数.
如你的类Ring中如果没有定义了这个构造函数
public Ring(double iRadius,double oRadius,String c)
{
innerRadius=iRadius;
代码1 //初始化外半径
color=c;
}
这里系统里自会生成默认构造函数:
Ring(){};
这时你就可以用Ring ring=new Ring(); 这个语句实例化.
但是如果类在有了自定义的构造函数后.系统就不会生成默认构造函数,即不能用Ring ring=new Ring(); 实例化对象.
如果想用这个语句,你也可以在类内定义这个没有参数的构造函数,即加上这个代码:
Ring(){
//这里也可以给每个变量赋初值,不用也行,一个语句没有也行.
};
2.接着为程序添加一个如下所示的默认构造方法,观察程序运行是否还有上述错误发生。
Public Ring()
{
innerRadius=1.0; //这里就给变量赋了初值
outerradius=2.0;
color=”white”;
}
正如前面后说,这时就不会出现错误了.
3.错误提示为ring.innerRadius为不可访问的,因为innerRadius私有的,所以不能直接访问.
4.现在请为该圆环类Ring再添中两个方法以便能返回内圆和外圆的周长,
public double getInnerPerimeter(){//圆内周长
return innerRadius*2*Math.PI;
}
public double getOuterPerimeter(){//圆外周长
return outerRadius*2*Math.PI;
}
显示其周长只要在main中定义有
Ring ring1 = new Ring(3,6,Color.blue);
Ring ring2 = new Ring(4,9,Color.black);
System.out.println("内圆的周长:"+ ring1.getInnerPerimeter());//输出内周长
System.out.println("外圆的周长:"+ ring1.getOuterPerimeter());//输出外周长
System.out.println("内圆的周长:"+ ring2.getInnerPerimeter());//输出内周长
System.out.println("外圆的周长:"+ ring2.getOuterPerimeter());//输出外周长
就可以显示两个对象的周长了.
5.仔细仔细阅读该程序,写出其功能(加注释)。
public class Ring
{
private double innerRadius;
private double outerRadius;
public String color;
public Ring(double iRadius,double oRadius,String c)
{
innerRadius=iRadius;
outerRadius = oRadius;//代码1 //初始化外半径
color=c;
}
public double getInnerRadius()
{
//代码2 //返回内半径
return innerRadius;
}
public double getOuterRadius()
{
return outerRadius;
}
public void setInnerRadius(double iRadius)
{
innerRadius=iRadius;
}
public void setOuterRadius(double oRadius)
{
outerRadius=oRadius;
}
public void setColor(String c)
{
color=c;//代码3 //设置颜色
}
public double getInnerPerimeter(){//圆内周长
return innerRadius*2*Math.PI;
}
public double getOuterPerimeter(){//圆外周长
return outerRadius*2*Math.PI;
}
public double getArea()
{
return(outerRadius*outerRadius-innerRadius*innerRadius)*3.141;
}
}
class Example
{
public static void main(String args[])
{
Ring ring=new Ring(5,8,"red");
System.out.println("圆环的内半径:"+ring.getInnerRadius());
System.out.println("圆环的外半径:"+ring.getOuterRadius());
System.out.println("圆环的颜色:"+ring.color);
System.out.println("内圆的周长:"+ ring.getInnerPerimeter());//输出内周长
System.out.println("外圆的周长:"+ ring.getOuterPerimeter());//输出外周长
System.out.println("圆环的面积:"+ring.getArea()+"\n");
ring.setInnerRadius(4);
ring.setInnerRadius(6);//代码4 //设置圆环ring 的外半径为6
ring.setColor("blue");
System.out.println("圆环的内半径:"+ring.getInnerRadius());
System.out.println("圆环的外半径:"+ring.getOuterRadius());
System.out.println("圆环的颜色:"+ring.color);
System.out.println("圆环的周长:"+ ring.getInnerPerimeter());//
System.out.println("圆环的面积:"+ring.getArea()+"\n");
}
}
运行结果:
圆环的面积:122.499
圆环的内半径:6.0
圆环的外半径:8.0
圆环的颜色:blue
圆环的周长:37.69911184307752
圆环的面积:87.94800000000001
1、编译出错。一旦自己定义了构造函数,系统将不再提供默认构造函数。所以无参构造函数是不存在的
2、现在有无参构造方法了,就没问题了
3、私有属性不可直接调用
4、原来你把原题贴过来了,那你自己想想再问吧
1.现将程序中的语句
Ring ring=new Ring(5,8,”red”);
改成
Ring ring=new Ring();
修改后编译运行,此时有错误发生吗?分析错误的原因。
会出现错误,因为在RING 里没有无参构造函数。
2,不会出现1中的错误,因为你写无参构造函数了!
3,会说无法访问,因为你将其定义为私有的了!在除了本类就访问不到了!
4,.......二楼回答就很好啊!
小白问题 多看看书 不予回答