Использование методов, определенных для типа объекта, не работает, когда я передаю тот же тип объекта - PullRequest
0 голосов
/ 03 сентября 2018

Обзор-
Это концептуальное сомнение.
Я хотел реализовать структуру данных для отслеживания зарегистрированных мобильных телефонов. Итак, я создал три класса -
1) Класс узла, который имеет две переменные -

class Node{
    public Object data;
    public Node next;
    public Node (Object datax) {
        this.data = datax;
    }
}


2) Класс мобильного телефона

class MobilePhone {
    public int phoneID;

    public MobilePhone(int number) {
        this.phoneID= number;
    }

    public int number() {
        return this.phoneID;
    }}<br>

3) Класс Myset, который реализует LinkedList с использованием объектов Node.
Я только что показал метод вставки здесь для простоты.

// the following method inserts a MobilePhone object in front of the Myset LL
public  void Insert(Object o) {

    if(IsMember(o)) {
        // print already a list
        return;
    }

    Node temp = head;

    head = new Node(o);

    head.next = temp;
    numberPhone++;
}

Тогда в другом классе я использую

MobilePhone m1MobilePhone = new MobilePhone(193);
set1Myset.Insert(m1MobilePhone);
System.out.println(set1Myset.head.data.number());

Я определил класс Node и Myset, используя только объекты класса Object для обобщения.
Но если я передам объект типа MobilePhone, я не смогу использовать методы, определенные в классе MobilePhone, поскольку компилятор продолжает отображать ошибку, такую ​​как -
"Номер метода () не определен для Тип объекта ".
У меня вопрос: если я уже определил, что тип данных объекта, который я передаю, то почему я не могу использовать методы, определенные для этого типа данных? Что я должен сделать, чтобы использовать их?

1 Ответ

0 голосов
/ 03 сентября 2018

Вы ссылаетесь на экземпляр производного класса со ссылкой на его базовый класс (класс Object). В этом случае эту ссылку можно использовать только для доступа к методам, определенным в классе Object.

Ваша подпись метода Insert () должна позволять параметру типа MobilePhone использовать методы этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...