Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.17;
Скачать: CL | DM;

Вниз

Помогите разобраться с мат. частью.   Найти похожие ветки 

 
Cerberus   (2010-07-16 11:49) [0]

Учу java. Возник такой вопрос.
При создании потока создается класс наследующий интерфейс Runnable. Но в конструкторе класс вызывается конструктор суперкласса. Откуда берется конструктор супер класса, если интерфейс только объявляет методы, но их не реализовывает.
class Test implements Runnable {
public Test(){
super();}
}


 
Юрий Зотов ©   (2010-07-16 12:23) [1]

От суперкласса и берется - от Object.


 
Cerberus   (2010-07-16 12:44) [2]


> Юрий Зотов ©   (16.07.10 12:23) [1]

Спасибо за ответ. А то я даже и не подумал про Object. То есть метод super() в принципе и не нужен? Просто в примерах о потоках его всегда вызывали.


 
Компромисс   (2010-07-16 12:58) [3]

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


 
Юрий Зотов ©   (2010-07-16 13:16) [4]

Только вот что - если нужен Runnable, то, может быть, лучше наследоваться от класса Thread?


 
makvell   (2010-07-16 13:44) [5]


> Юрий Зотов ©   (16.07.10 13:16) [4]
> Только вот что - если нужен Runnable, то, может быть, лучше
> наследоваться от класса Thread?

Чем лучше, если не секрет? :)


 
Юрий Зотов ©   (2010-07-16 14:18) [6]


> makvell   (16.07.10 13:44) [5]

МОЖЕТ БЫТЬ лучше - вроде бы, я именно ЭТО написал?
А может быть и не лучше. От задачи зависит.


 
makvell   (2010-07-16 14:42) [7]


> Юрий Зотов ©   (16.07.10 14:18) [6]
>
> > makvell   (16.07.10 13:44) [5]
>
> МОЖЕТ БЫТЬ лучше - вроде бы, я именно ЭТО написал?
> А может быть и не лучше. От задачи зависит.

Зачем так сразу в штыки воспринимать простой вопрос? :) Просто этот вопрос в контексте беседы больше воспринимается как совет, ну или мне так показалось. Вот и решил поинтересоваться, чем же оно таким лучше.


 
Юрий Зотов ©   (2010-07-16 15:14) [8]

Это и был совет, все верно. Совет обратить внимание на то, что поток можно создать не одним, а 2 способами:

1. new MyThread();
2. new Thread(MyRunnable);

На самом деле, конструкторов у потока больше двух, но эти 2 - основные.

Какой способ лучше выбрать - зависит от задачи. Например, если нужен доступ к protected-секции потока, то первый способ сразу его дает. А если по логике работы программы целесообразно наследоваться от какого-то другого класса, то надо выбирать второй способ.


 
makvell   (2010-07-16 15:37) [9]


> Юрий Зотов ©   (16.07.10 15:14) [8]
> Это и был совет, все верно. Совет обратить внимание на то,
>  что поток можно создать не одним, а 2 способами


Я почему-то воспринял его как совет использовать тред, а не ранабл. Как совет обратить внимание что способов создания несколько, тот пост не воспринимается, во всяком случае для меня :)

В любом случае, о чем это мы. Автор получил что хотел, а мы уже тут балуемся :)


 
Юрий Зотов ©   (2010-07-16 15:58) [10]


> makvell   (16.07.10 15:37) [9]
> Как совет обратить внимание что способов создания
> несколько, тот пост не воспринимается, во всяком случае
> для меня :)

Это как раз потому, что пресловутое "может быть" Вы почему-то пропустили. Откуда и родилось [5]. Что и было отмечено в [6].



Страницы: 1 вся ветка

Текущий архив: 2010.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1278865350
Кто б сомневался
2010-07-11 20:22
2010.10.17
Unzip компонент


6-1227179897
Decoding
2008-11-20 14:18
2010.10.17
Indy + Cookie


15-1279271125
12
2010-07-16 13:05
2010.10.17
процедура в oracle. Подскажите


15-1279030179
Я
2010-07-13 18:09
2010.10.17
asm to pascal


3-1246602645
Rule
2009-07-03 10:30
2010.10.17
Ms SQL server через ADO-Native Client простой селект