JAVA继承问题,实际参数列表与形式参数列表长度不同怎么解决

import java.lang.Math;

class Cylinder{
public double radius,height;
public Cylinder(double radius,double height){
this.radius=radius;
this.height=height;
}
double superficialarea(){
return 2*Math.PI*radius*radius+2*Math.PI*radius*height;
}
double volume(){
return Math.PI*radius*radius*height;
}
void show(){
System.out.println("圆柱体的表面积:"+superficialarea()+"圆柱体的体积:"+volume());
}
}

class Ringcylinder extends Cylinder{
double innerradius;
public Ringcylinder(double radius,double height,double innerradius){
this.radius=radius;
this.height=height;
this.innerradius=innerradius;
}
void setinnerradius(double innerradius){
this.innerradius=innerradius;
}
double superficialarea(){
return 2*(Math.PI*radius*radius-Math.PI*innerradius*innerradius)+2*Math.PI*(radius+innerradius)*height;
}
double volume(){
return Math.PI*(radius*radius-innerradius*innerradius)*height;
}
void show(){
System.out.println("环柱体的表面积:"+superficialarea()+"环柱体的体积:"+volume());
}
}

public class Test{
public static void main(String[] args){
Cylinder a=new Cylinder(5,10);
a.show();
Ringcylinder b=new Ringcylinder(5,10,1);
b.show();
}
}

public Ringcylinder(double radius,double height,double innerradius){
this.radius=radius;
this.height=height;
this.innerradius=innerradius;
}

这个构造函数虽然定义了radius, height, innerradius,但在print之前没有给构造函数传入这个几个参数,所以导致出现此问题,再调用print之前,可以设置Ringcylinder(0.5,3,1),这样构造函数才能进行初始化全局变量,全局变量才能计算。不然首先没有参数为空的构造函数,有没有将参数传入,必然会报错。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-23
Cylinder缺少一个空参构造函数
public Cylinder() {
super();
}

因为在Ringcylinder的构造函数中会默认调用
super();
而Cylinder不存在该构造函数所以报错。本回答被提问者和网友采纳
第2个回答  2013-09-16
首先,构造函数时可以重载的,可以解决你的标题中的问题

而,你的代码中的问题并不像你的标题那样,这是因为继承中,基类没有办法构造造成的(基类没有默认构造函数,或者没有给基类提供参数)。
第3个回答  2013-09-16
在Cylinder类中写个什么参数都不带的构造方法就完美了

JAVA继承问题,实际参数列表与形式参数列表长度不同怎么解决
public Ringcylinder(double radius,double height,double innerradius){ this.radius=radius;this.height=height;this.innerradius=innerradius;} 这个构造函数虽然定义了radius, height, innerradius,但在print之前没有给构造函数传入这个几个参数,所以导致出现此问题,再调用print之前,可以设置Ringcylinder(0....

java实际参数列表和形式参数列表长度不同!
1、修改两处程序可以运行:①、其他代码不变,修改Cat类如下:class Cat extends Animal { \/\/增加无参构造器 public Cat(){} \/\/增加名字和年龄的构造器 public Cat(String name, int age){ super(name,age); } public void eat() { System.out.println("猫吃鱼");...

JAVA继承问题,实际参数列表与形式参数列表长度不同怎么解决
Cylinder缺少一个空参构造函数 public Cylinder() { super();} 因为在Ringcylinder的构造函数中会默认调用 super();而Cylinder不存在该构造函数所以报错。

java实际参数列表与形式参数长度不同
1、修改两处程序可以运行: ①、其他代码不变,修改Cat类如下: class Cat extends Animal { \/\/增加无参构造器 public Cat(){} \/\/增加名字和年龄的构造器 public Cat(String name, int age){ super(name,age); } public void eat() { System.out.

实际参数列表和形式参数列表长度不同
调用子类构造器的时候,系统发现你子类构造器的参数列表和父类不同,所以就会调用默认的无参的父类构造器。你可以在父类添加一个无参的构造器,在里面打印一句话,你创建子类对象的时候看看父类的无参的构造器有没有打印你父类无参构造器的那句话,如果打印了就证明调用的无参构造器。

Java 实际参数和形式参数长度不同
你只写了无参的构造方法,但你实例化的时候却用了有参构造,肯定报错。解决:在Car类中添加一个有参数构造方法。public Car(String brand,String color,String type,int speed ) { \/\/有参 this.brand = brand; this.color = color; this.type = type; this.speed = speed;} ...

JAVA实际参数和形式参数列表长度不同
import java.util.Scanner;public class EncryptTest {public static void main(String[] args) {System.out.println(encrypt("hello", 20));userInteraction();}public static String encrypt(String message, int key) {System.out.println("encoding: " + message + ", with key: " + key);S...

实际参数列表和形式参数列表长度不同。。
这里改成1.0或者强转浮点类型

Java代码bug求助,实际参数列表与形式参数列表长度不同?
你好,很高兴回答你的问题。其实你问题描述中已经说明了原因了。实际参数列表必须和形式参数列表保持一致。第三张图中定义的get方法是不需要参数的,所以调用是不可以传参数。如果有帮助到你,请点击采纳。

形式参数列表和实际参数列表不同——Java求解
Sector(Position pos,Occupant occ),这个方法有两个参数,而Sector sector = new Sector(new Position(this, row, column)); 这句是红色的 你只传进去了一个Position对象,当然会报错啦,Sector sector = new Sector(new Position(this, row, column),new Occupant());这样就可以了!!

相似回答