Я искал ответ на эту проблему в течение довольно долгого времени, и я провел много разных тестов, и я сузил и упростил ошибку в своем Java-апплете до этого небольшого фрагмента кода. Я предполагаю, что эта точно такая же ошибка возникла бы, если бы это был не апплет.Почему моя программа не получает доступ к массиву суперкласса, как ожидалось?
Главный класс.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;
public class Main extends Applet{
public int[] a = {2};
public int[] b = new int[1];
public void init(){
b[0] = 4;
Otherclass s = new Otherclass();
}
}
Это Другой класс.
import java.util.*;
import java.lang.*;
public class Otherclass extends Main{
public Otherclass(){
System.out.println(super.a[0]);
System.out.println(super.b[0]);
}
}
Ожидаемый результат:
2
4
Фактический выход:
2
0
Что я делаю неправильно?
Спасибо заранее, Михей
Нет никакого смысла, чтобы родительский класс удерживал переменные дочерними классами. На самом деле это на грани безумия. Почему у вас это есть? –
@everybody: это апплет, 'init()' вызывается браузером. Тем не менее, это полное непонимание того, как работает наследование. – moonwave99
@ moonwtave99: amen. Снова код просто сумасшедший. –