2013-08-12 2 views
0

Если мы, в нашей программе, имеем только один класс, без расширения какого-либо класса. НапримерИспользование super() в конструкторе

public class Point { 
    int x, y; 
} 

Компилятор создает конструктор по умолчанию и вызовите метод супер() acording к этому http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9

public class Point { 
    int x, y; 
    public Point() { 
    super(); 
    } 
} 

Q: Как я понимаю, супер(); вызывается конструктор по умолчанию для суперкласса, но в этом случае у нас нет суперкласса, поэтому что такое вызов super() в этом случае?

+4

Каждый класс расширяет класс Object. Таким образом, у вас есть суперкласс. –

+8

за исключением объекта, который распространяется на Чак Норрис –

+2

О, Боже .. люди настолько заняты, что отвечают на этот основной вопрос, что они даже не заботятся о своих ТИПОС: P – exexzian

ответ

1

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

+0

Хорошо, теперь понятно. Но что такое конструктор по умолчанию класса Object? Извините, мабы - это глупый вопрос .. – user16401

+0

Это дескриптор JVM, я думаю, что в основном это распределение памяти. – NiziL

4

Вы есть супер класс. Все классы в Java автоматически расширяют java.lang.Object, независимо от того, указали вы это или нет.

Смотрите здесь: http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html

Чтобы взять один фрагмент из этой ссылке:

Все классы имеют по крайней мере один конструктор. Если класс не явно объявляет, компилятор Java автоматически предоставляет конструктор no-argument , называемый конструктором по умолчанию. Этот конструктор по умолчанию вызывает конструктор без аргументов класса parent или конструктор объекта , если класс не имеет другого родителя. Если у родителя есть никакого конструктора (объект имеет один), компилятор отклонит программу .

+0

Поймите. Но какова цель конструктора класса Object? Имеет ли этот вопрос смысл?:) – user16401

+0

Создает объект (если вы не переопределили его конструктор, предоставив его самостоятельно). –

+0

Конструктор Java для 'Object' фактически не делает ничего интересного, но он служит в качестве корня дерева конструктора; разработчик JVM знает, что этот конструктор является концом любой конкретной цепочки конструкторов. Кроме того, простые 'Object' иногда используются для целей, таких как блокирующие объекты. – chrylis

0

В java каждый класс имеет класс супер. Если ни один из них не указан явно, то это Object

0

Все классы Java распространяются от Object, поэтому, если вы не расширяете какой-либо класс, супер вы вызываете конструктор класса Object.

0

Object - супер тип всего в java. Super() он назовет Object класс.

+2

@sureshatta: Сказал мне, что я не менял достаточно символов. Вам нужно отредактировать еще один экземпляр. –

0

Каждый класс в Java неявно расширяет класс объектов. Поэтому вы всегда можете вызвать super() из конструктора любого класса.

Опять же, в классе Object нет явного конструктора. Компилятор создает по умолчанию один и конструктор по умолчанию класса Object создает сам объект.

Смежные вопросы