Предисловие
Статический код имеет приоритет над нестатическим кодом, потому что участники, модифицированные Static, являются членами класса и будут выполняться, поскольку JVM загружает класс. Участники, не модифицированные Static, также называются членами экземпляра. Объекты необходимы, прежде чем они могут быть загружены в память кучи. Следовательно, статический будет предпочтительным для нестатического.
При выполнении конструктора (метод строительства) существует три неявных шага перед выполнением тела метода:
1. Супер утверждение может иметь следующие три ситуации:
1) Первая строка конструктора - это утверждение, и неявные три шага не будут выполнены.
2) Первая строка тела конструктора является супер оператором, и называется конструктор соответствующего родительского класса.
3) Первая строка тела конструктора - это ни это утверждение, ни супер -оператор, а супер () не называется неявно, то есть конструктор по умолчанию своего родительского класса, поэтому родительский класс обычно должен обеспечить конструктор по умолчанию;
2. Инициализировать нестатические переменные;
3. Построить кодовый блок.
Исходя из этого, мы видим, что блок строительного кода имеет приоритет над телом метода метода строительства, но это ключевое слово и супер -ключевое слово не могут появиться в одно и то же время и может быть только на первой строке кода. Если появится это ключевое слово, неявные три шага не будут выполнены.
Сначала посмотрите на следующие классы, а затем оцените их результаты:
открытый класс A {static {System.out.print (1); } public a () {System.out.print (2); }} открытый класс B расширяет {static {System.out.print ("a"); } public b () {System.out.print ("b"); }} открытый класс c {public static void main (string [] args) {a a = new b (); a = new B (); }} Порядок исполнения родительского класса и детского класса
Характеристики выполнения статических переменных
Примечания по переопределению метода
1. Когда классы родителей и дочерний код имеют статические кодовые блоки и конструкторы, порядок выполнения выглядит следующим образом:
Статический кодовый блок родительского класса> Блок статического кода подкласса
Конструктор класса родительского класса> конструктор подкласса (сначала есть отец, тогда есть ребенок)
Если это многоуровневая связь наследования, родительский класс на самом высоком уровне будет выполнен сначала, а затем уменьшен по очереди.
Резюме: предпочтительнее статическое выполнение, исполнение родительского класса является предпочтительным
Примечание. Блоки статического кода выполняются, когда JVM загружает класс, а блоки статического кода выполняются только один раз.
2. При вызове метода в классе, перед выполнением тела метода, переменные элемента в классе должны быть назначены сначала. Если в коде нет конкретного значения, в коде также существует значение по умолчанию. Приказ о назначении переменных членов выполняется в порядке до и после.
Если есть как прямые назначения, так и назначения конструктора, то выполните их последовательно
3. переопределить (переопределить) перегрузка (перегрузка)
Перегрузка - это имя метода, тип возврата одинаково, единственное отличие состоит в том, что параметры метода различны (разные типы параметров или разные типы параметров)
Переписать:
Полиморфизм:
Ссылка на родительский класс указывает на объект подкласса. Метод, выполняемый при вызове, также является методом подкласса. Метод родительского класса не будет выполнен.
Так называемый полиморфизм означает, что ссылка на родительский класс или тип интерфейса может указывать на подкласс или экземпляр (объект) класса, который реализует интерфейс.
После прочтения приведенных выше инструкций вы также должны знать результаты вывода вышеуказанной программы.
Результатом вывода является: 1A2B2B
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.