2017-02-13 10 views
0

Я относительно новичок в Java и объектно-ориентированном программировании. Я узнаю о наследовании и ООП. У меня есть этот 1 класс, скажем, Bike, который имеет общую информацию. Тогда у меня есть эти другие классы, скажем, Sports и Road, которые расширяют байк, но я хочу составить список ссылок этих классов. Поэтому у меня был бы один связанный список, который содержит как спорт, так и дорогу. Но я не знаю, как это осуществить и реализовать. Я знаю, как сделать связанный список на основе одного класса, но не нескольких. Благодарю.Как создать связанный список разных классов?

+0

Если ' Sports' и 'Road' являются подклассами' Bike', затем 'List ' или 'LinkedList ' могут содержать объекты любого из этих классов. Такова природа наследования - объект этих типов также является «байком». («Спорт» - это ужасное имя для типа мотоцикла. «SportsBike» намного лучше, если это то, что вы имеете в виду. Точно так же «Дорога», потому что я ожидал бы, что этот класс будет представлять дорогу, а не «дорогу» велосипед ".) – ajb

+0

@ajb извините, вот что я имел в виду. SportsBike и RoadBike. Является ли LinkedList составлением списка? Он должен использовать такие вещи, как * следующий и такой. –

ответ

1

Просто сделайте 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 
+0

Ahh. Понимаю. Я изучаю Java после C, поэтому я думал, что мне придется подключить их к следующему. Все эти стандартные функции в java? –

+0

@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). –

0

Как велосипед суперкласс, список типа велосипеда может быть использован для хранения объекта его 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); 
Смежные вопросы