父类
public class Kola {
int id;
Put put = new Put(id, id);
public Kola(int id1) {
id1=0;
}
public int prelazenje(int p){
return p = (int)(5 + (Math.random() * (10 - 5)));
}
public int paljenje (int pa){
return pa=(int)(5 + (Math.random() * (10 - 5)));
}
public void start(){
}
}
SubClass
public class Smer1 extends Kola implements Runnable {
Thread objekat1;
public Smer1(int ) {
super();
objekat1 = new Thread(objekat1);
objekat1.start();
}
@Override
public void run() {
}
}
问题是:
在超类构造函数中初始化Kola(转发她的Put和标识符)是一个运行线程的方法(通过调用方法start)run方法从Kola类中调用“paljenje”的方法,您需要同步访问Put和访问变量;之后开始“Prelazenje”的方法; 再次,你需要同步访问道路,但然后再次更新变量。
答案 0 :(得分:3)
您不初始化方法。方法没有状态;你只能调用。
换句话说:方法 的行为取决于它接收的参数;以及它有权访问的字段。
如果要确保从超类中调用方法可以得到正确的结果 - 那么您只需要确保相应地设置超类的字段。
目前,您的问题非常简单:您的子课程调用 super();所以你需要一个没有任何参数的构造函数。但是你的超级班只有一个构造函数 - 这需要一个参数!
就在那里,另一个错误:
objekat1 = new Thread(objekat1);
转换为:
objekat1 = new Thread(null);
(因为objekat1为空"在="的右侧;)
当然:你的方法prelazenje()和palenje()......只取决于他们的参数。所以,无论你如何初始化你的超类,这些方法都会总是在给定相同参数的情况下做同样的事情!
老实说,这里有道理的唯一答案是:请立即停止您正在做的事情。退后。在你考虑runnables和线程之前,你真的必须学习关于基础知识。
您的代码显示您不了解Java中的许多重要事项;与此同时,你正试图建立一些复杂的东西。 将不起作用。因为你有没有线索你在做什么。
我们无法为您提供帮助,只有您可以。