Loading...
sasho95 avatar sasho95 0 Точки

Защо super реферира към обекта със който съм извикал метода а не към нещо от суперкласа.

public class Fragile_Base_Class_Main {

public static void main(String[] args) {
    RandomArrayList randomArrayList = new RandomArrayList();
    randomArrayList.add(12);
    randomArrayList.add(15);
    randomArrayList.add("gosho");
    randomArrayList.add("pesho");
    randomArrayList.add(4);
    randomArrayList.add(3);
    randomArrayList.add(7);
    randomArrayList.add("dsa");
    while (randomArrayList.size() > 0) {
        System.out.println(randomArrayList.getRandomElement());
    }
}
public class RandomArrayList extends ArrayList {
    public Object getRandomElement() {
        int rnd = (int) Math.round(Math.random() * (super.size() - 1));
        Object temp = super.get(rnd);
        super.remove(rnd);
        return temp;
    }
}

int rnd = (int) Math.round(Math.random() * (super.size() - 1)); в ето този ред. Това super.size() защо реферира към сайза на обекта със който съм викал метода? Не трябва ли със this.size() да реферираме към него а със super.едиКаквоСи към методи,полета и контруктори от superclass, но не към неща от subclass

Тагове:
0
Java OOP Basics 21/05/2017 20:36:23
TodorAtanasov avatar TodorAtanasov 30 Точки

Ще се пробвам да обясня... ако не успея извинявам се. Твоят клас (RandomArrayList) наследява parent класа и ползва неговите полета. Ти в твоя клас нито override-ваш метода size() нито имаш поле size. Ако си напишеш твое поле size което да държи нещо и му напишеш гетър size() който ще е override на size() на родителя то тогава ще ги ползваш така. Като нямаш оверайд и поле твоя клас ползва тези от горе и няма супер и тхис то е само 1. (май не ме бива да обеснявам )

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.