Я относительно новичок в Java и объектно-ориентированном программировании. Я узнаю о наследовании и ООП. У меня есть этот 1 класс, скажем, Bike, который имеет общую информацию. Тогда у меня есть эти другие классы, скажем, Sports и Road, которые расширяют байк, но я хочу составить список ссылок этих классов. Поэтому у меня был бы один связанный список, который содержит как спорт, так и дорогу. Но я не знаю, как это осуществить и реализовать. Я знаю, как сделать связанный список на основе одного класса, но не нескольких. Благодарю.Как создать связанный список разных классов?
ответ
Просто сделайте LL базового класса и добавьте нужные элементы.
import java.util.*;
public class ans{
public static void main(String[] args){
LinkedList<Parent> list = new LinkedList<Parent>();
list.add(new ChildA());
list.add(new ChildB());
list.add(new Parent());
for(Parent p: list)
System.out.println(p);
}
}
class Parent{
public String toString(){
return "I am a Parent";
}
}
class ChildA extends Parent{
public String toString(){
return "I am a ChildA";
}
}
class ChildB extends Parent{
public String toString(){
return "I am a ChildB";
}
}
С выходом
I am a ChildA
I am a ChildB
I am a Parent
Ahh. Понимаю. Я изучаю Java после C, поэтому я думал, что мне придется подключить их к следующему. Все эти стандартные функции в java? –
@JMei Да. Вы можете реализовать свой собственный LL, но всегда предпочитаете стандартную реализацию. Дополнительная информация в [LinkedList] (https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html) и [для каждого] (http://docs.oracle.com/javase /specs/jls/se8/html/jls-14.html#jls-14.14.2). –
Как велосипед суперкласс, список типа велосипеда может быть использован для хранения объекта его subclasses.Something как этот
Road r1=new road();
Road r2=new road();
Sports s1=new Sports();
Sports s2=new Sports();
List<Bike> bikeType=new ArrayList<Bike>();
bikeType.add(r1);
bikeType.add(r2);
bikeType.add(s1);
bikeType.add(s2);
Если ' Sports' и 'Road' являются подклассами' Bike', затем 'List' или 'LinkedList ' могут содержать объекты любого из этих классов. Такова природа наследования - объект этих типов также является «байком». («Спорт» - это ужасное имя для типа мотоцикла. «SportsBike» намного лучше, если это то, что вы имеете в виду. Точно так же «Дорога», потому что я ожидал бы, что этот класс будет представлять дорогу, а не «дорогу» велосипед ".) –
ajb
@ajb извините, вот что я имел в виду. SportsBike и RoadBike. Является ли LinkedList составлением списка? Он должен использовать такие вещи, как * следующий и такой. –