Я новичок в программировании, и я только что изучил наследование неделю назад, и у меня есть вопрос о том, как спроектировать правильный класс, который расширяет другой класс.
Ниже приведен код Bank Class , в котором все объекты банковского счета хранятся в ArrayList , поэтому я расширяю класс ArrayList в классе Bank.
Вопрос 1: Класс банка Атрибут ArrayList . Вот почему я вызываю super()
внутри конструктора. Поскольку атрибут может быть создан путем вызова super()
, поскольку класс Bank расширяет ArrayList, я подумал, что в банке не требуется никакого другого частного атрибута, кроме атрибута, который я создал путем вызова super()
. Это правильный способ наследования?
Вопрос 2: Поскольку атрибута нет, я застрял на сериализации через ObjectOuputStream. Я хочу написать ArrayList (атрибут, который я создал, выполнив super()
в конструкторе), но не могу, потому что я не знаю, как ссылаться на атрибут ArrayList, который я создал в супер-конструкторе. Я попытался написатьObject (это), но это не сработало, очевидно. Как можно сериализовать ArrayList?
Вопрос 3: Если это правильный способ реализации наследования класса Bank, как я могу загрузить ArrayList из ObjectInputStream? Поскольку атрибута нет, я не знаю, как ссылаться на атрибут, который я задаю в super()
, поэтому я сделал такую вещь, как
this = (ArrayList) ois.readObject ()
Но это не сработало ... Как я могу загрузить ArrayList, используя десериализацию при отсутствии атрибута?
public class Bank extends ArrayList<Account> implements Serializable{
//no attribute
public Bank(){
super();
}
//other methods...
public void saveToBinary() throws IOException{
FileOutputStream fos = new FileOutputStream("Bank_Account_Inherit_Binary.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this);//can't do this
oos.flush();
oos.close();
}
public void loadFromBinary() throws IOException, ClassNotFoundException{
FileInputStream fis = new FileInputStream("Bank_Account_Inherit_Binary.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
this = (ArrayList<Account>)object;//not working b/c "this" is final variable
}
}