2014-01-15 2 views
-1

Я изучаю Java и Thread и задаю вопрос о наследовании.Наследование и расширение Java Thread

Например, у меня есть родительский класс с именем SuperThread, и эта тема имеет LocalThread и NetThread.

Я хотел бы использовать конструктор SuperThread в LocalThread и NetThread.

, например:

public class SuperThread{ 
    Private String name; 
    Private int size; 

    SuperThread(String name, int size){ 
     this.name = name; 
     this.size = size; 
    }  
} 

public class LocalThread extends Thread{ 
    String path = ""; 
    LocalThread(String name, int size, String path){ 
    Super(name, size); 
    this.path = path; 
} 

public class NetThread extents Thread{  
    //Share common constructor from parent class, but it was own part 
    } 
} 

Однако, я знаю, что я должен расширить Thread для того, чтобы использовать нить.

Есть ли способ расширить потоки при наследовании конструктора из класса родителя?

+0

Вы не должны расширять 'Thread' именно по этой причине (и другие); в Java нет множественного наследования. –

+0

Вам нужно только наследование, когда вам нужно обратиться к экземплярам подкласса, как если бы они были экземплярами супертипа. Другими словами, если у вас нет какого-либо метода, который бы принимал параметры типа «SuperThread», и вы планируете передавать этому экземпляру экземпляры «LocalThread» и «NetThread», вам не требуется наследование. – erickson

ответ

4

Использовать интерфейс Runnable и переопределить метод run в вашем классе LocalThread.

public class LocalThread extends SuperThread implements Runnable{ 
    String path = ""; 
    LocalThread(String name , int size, String path){ 
     super(name, size); 
     this.path = path; 
    } 

    @Override 
    public void run() { 
     //some actual job here 
    } 
} 
Смежные вопросы