Главная страница
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-1279090074
oldman
2010-07-14 10:47
2010.10.17
И никакой пользы для юзеров родной страны...


15-1278865350
Кто б сомневался
2010-07-11 20:22
2010.10.17
Unzip компонент


15-1279450570
Вася
2010-07-18 14:56
2010.10.17
Закрытие программы в delphi


2-1279637266
Xandr001
2010-07-20 18:47
2010.10.17
Помогите выбрать тип данных


2-1280224684
Кондрат Воронов
2010-07-27 13:58
2010.10.17
Работа с объектами