Add()构造函数有什么问题?

时间:2015-06-18 19:01:57

标签: java multithreading

我正在尝试使用多线程添加两个数字,但它在编译时显示以下错误:
“构造函数Add in class Add不能应用于给出类型;
class输入扩展Add {
required:int,int
发现:没有参数
原因:实际和正式的参数列表长度不同

import java.util.Scanner;

class Add implements Runnable{
    Thread t;
    int a,b,c;
    Add(int a,int b){
        this.a=a;
        this.b=b;
        t = new Thread(this,"add");
        t.start();
    }
    public void run(){
        c=a+b;
        System.out.println("Exiting add thread.");
    }
}
class Input extends Add{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        Add o = new Add(5,4);
        System.out.println("Enter a string: ");
        String str = sc.nextLine();
        System.out.println("String is : " + str);
        System.out.println("c: " + o.c);
    }
}

1 个答案:

答案 0 :(得分:0)

由于Add中唯一可用的构造函数需要两个参数,因此必须在Input中有一个显式调用它的构造函数,但是你没有。默认的隐式构造函数尝试调用不存在的超类构造函数Add(),因此出错。

但是你的Input课程无缘无故延长Add。删除extends Add,它应该编译。

class Input {