Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
1

Не изменяется поле, наследуемое от родительского класса

17.11.2014, 00:57. Просмотров 311. Ответов 0
Метки нет (Все метки)

Здравствуйте!
Не пойму ошибку.
Имеется класс:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
 * Abstract class to build collections
 * @param <T>
 */
public class EasyCollection<T> {
    /**
     * Inner class for storing the node collection.
     * @param <T>
     */
    protected static class Node<T> {
        public Node<T> prev;
        public Node<T> next;
        public T value;
 
        /**
         * Constructor 1
         * @param value - Item value which will be push into the collection.
         */
        public Node(T value) {
            this(null, value, null);
        }
 
        /**
         * Constructor 2
         * @param prev - Pointer to the previous item of the collection.
         * @param value - Item value which will be push into the collection.
         * @param next - Pointer to the next item of the collection.
         */
        public Node(Node<T> prev, T value, Node<T> next) {
            this.prev = prev;
            this.value = value;
            this.next = next;
        }
    }
 
    protected Node<T> items;
    protected long size;
 
    public EasyCollection() {
        this.items = null;
        this.size = 0;
    }
 
    /**
     * Check whether the collection is empty
     * @return Check result
     */
    public boolean isEmpty() {
        return items == null;
    }
 
    /**
     * Remove all items in the collection
     */
    public void clear() {
        size = 0;
        items = null;
    }
 
    /**
     * Get the number of items in the collection.
     * @return - Item count.
     */
    public long count() {
        return size;
    }
}


И собственно код самого списка:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
 * Collection for storing pointers to objects in a list.
 * @param <T>
 */
public class EasyList<T> extends EasyCollection<T> {
    private long size;
    private Node<T> top;
 
    /**
     * Constructor 1
     */
    public EasyList() {
        super();
        top = null;
    }
 
    /**
     * Constructor 2
     * @param value - Item value which will be push into the collection.
     */
    public EasyList(T value) {
        this();
        add(value);
    }
 
    /**
     * Add a new item to the list.
     * @param value
     */
    public void add(T value) {
        ++size;
 
        if(items == null) {
            top = items = new Node<T>(value);
            return;
        }
 
        while(items.next != null)
            items = items.next;
 
        items.next = new Node<T>(items, value, null);
    }
}


При вызове второго конструктора EasyList count равно 0.
Java
1
2
EasyList<Integer> l = new EasyList<Integer>(2);
l.count() //=0, должно быть 1
У меня чувство, что я что-то упустил по ООП, может кто-нибудь объяснить, почему так происходит?

Добавлено через 23 минуты
Сейчас попробовал переопределить функцию count() базового класса, и все стало работать, но не понятно, почему не работает без переопределения, почему count() класса EasyCollection всегда возвращает ноль?

Добавлено через 4 минуты

Не по теме:

Уже, блин, спать похоже пора :D


Прошу прощения, поле в потомке тоже самое переопределил)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 00:57
Ответы с готовыми решениями:

Статическое поле абстрактного класса в как наследуемое поле и преведение его типа
public abstract class BaseManager : BaseClass { public static BaseManager Instance {...

Как из метода производного класса вызвать поле родительского класса
Добрый день! Помогите пожалуйста вызвать поле базового класса из метода производного класса. Код,...

Как узнать поле родительского класса?
Производного класса-ошибся.(не знаю как изменить тему) Есть: QHash&lt;QMediaObject*,myItem*&gt;*...

Почему поле родительского класса не видимо в классе-наследнике?
Доброго времени суток! Прописал код с классом-наследником. И компилятор выдаёт, что нет доступа в...

Доступ к методу родительского класса из метода свойства родительского класса
Не знаю правильно ли написал тему, ну суть такая, есть класс который описывает допустим шарик, а...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 00:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Обращение к одному дочернему полю родительского класса через другое дочернее поле
Здравствуйте, пишу на форумы первый раз, потому, пожалуйста, не горите, если что не так, но...

Почему внук родительского класса не может работать с полями дедовского класса?
Не всё так просто на самом деле. Непонятно, какую роль во всём этом играют шаблоны. Но к делу. Вот...

Может ли метод родительского класса обратиться к полю дочернего класса
Может ли метод родительского класса обратиться к полю дочернего класса?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.