Java это и супер ключевые слова

1

У меня вопрос о Java это и супер ключевые слова, давайте взять некоторые примеры

Пример Firts

import java.awt.*;

public class Main extends Frame {
        //constructor of the class 
        public Main () {
                super ("My frame");
                setSize (200,100);
                setVisible (true);
        }

        public static void main (String [] args) {
                 new Main ();
         }
}

второй пример

import java.awt.*;

public class Main extends Frame {
        //constructor of the class 
        public Main () {
                //here the difference from example 1    
                super ("My frame");
                super.setSize (200,100);
                super.setVisible (true);
        }

        public static void main (String [] args) {
                 new Main ();
         }
}

Какой пример лучше и почему?

Теперь давайте рассмотрим некоторые примеры этого ключевого слова

public class Main {
        public void print () {
                System.out.println ("Hi");
        }

        public static void main (String [] args) {
                 print();
         }
}

Второй пример

public class Main {

        public void print () {
                System.out.println ("Hi");
        }

        public static void main (String [] args) {
                 //here the difference
                 this.print();
         }
}

Что лучше и почему? Спасибо за ответ

  • 1
    Вы должны использовать его, чтобы устранить двусмысленность там, где это необходимо, но оставайтесь как можно более последовательными.
  • 0
    Первый набор: нет никакой разницы, если вы не переопределите setSize или setVisible в Main , потому что super.XXX явно вызовет метод, как это определено в классе Frame . С учетом вышесказанного, соглашение заключается в использовании super только при необходимости.
Показать ещё 2 комментария
Теги:
this
super

1 ответ

2
Лучший ответ

Используйте super только тогда, когда вам действительно нужно. Если вы переопределите setSize() вы увидите, что второй пример не вызовет ваши переопределенные методы. Это не обязательно желаемое поведение, и поэтому вы обычно должны просто вызывать методы без оператора super. Как правило, лучше всего писать код, чтобы его можно было продлить или сохранить, не беспокоясь о том, действительно ли некоторые переопределения будут переопределяться из определенных методов или нет. Также см. Комментарий Vulcan, который делает проблему нулевой и пустой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню