2014-02-21 120 views
0

我是java的初學者,我用C++編寫代碼,當使用類時,我使用它們在單獨的文件中定義它們,然後將這些類包含在我的主文件。如何在另一個類的不同包中創建一個類的對象

我正在嘗試學習套接字編程的線程,以便我可以將多個服務器端口作爲線程打開並接受多個客戶端。我知道在Java中,文件名應該與類名相同(如果我錯了,請糾正我)。這就是我要做的:

main.java

include derived.java; 

class main1 

{ 

    main1() 

     { 

      System.out.println("Constructor of main1 class."); 

     } 

    void main1_method() 
     { 

      System.out.println("method of main 1 class"); 
     } 

    public static void main(String[] args) 

     { 

      main1 my = new main1(); 
      Derived derivedThread = new Derived(); 
      derivedThread.start(); 

     } 
} 

derived.java

public class derived extends Thread 

    {  
      public void run() 

      { 

       System.out.println("starting a new thread"); 

    } 

    } 

如何創建主派生類對象,包括它在我的main1.java文件中?

我想我不完全理解Java在Java中的工作方式以及使用哪種類路徑。我有一個網絡項目的截止日期,我非常落後,所以請幫助我!

+0

文件名是相同的main1.java – user3085866

+0

[從這裏開始](http://docs.oracle.com/javase/tutorial/java/concepts/class.html)。在java中,您可以通過'import name.of.package.className'進行導入。總的來說,這不是Java類的一個很好的例子,也沒有爲你編寫它們,所以很難告訴你如何糾正它們。請參閱我鏈接的教程。 – turbo

+0

是'include derived.java;'你文件的一部分嗎?這是沒有有效的java代碼 – exception1

回答

0

無需使用此include derived.java;。如果派生類存在於不同的包中,請使用導入。調用和聲明時,類Derived是不同的。

class main1  // Class name must start with Uppercase 
{ 
public static void main(String[] args) 
    { 
     main1 my = new main1(); // Can be remove 
     Derived derivedThread = new Derived(); 
     derivedThread.start(); 
     } 
} 


    public class derived extends Thread // Change derived to Derived 
--------------------^ 
    {  
     public void run() 
    { 
    System.out.println("starting a new thread"); 
    } 
} 

我有刪除構造函數和一個未使用的方法。

+0

我想學習如何在我的主文件中的.java文件中使用單獨編寫的類來創建它的對象,你明白我的觀點了嗎? – user3085866

+0

不能理解 – Kick

+0

我有一個項目,它有一個默認的package.default包有main1.java和derived.java。 我想在main1.java.how中導入derived.java,我這樣做。 – user3085866

1

刪除你的文件,並嘗試這個,這是它應該如何看在Java中:

派生類: Derived.java

public class Derived extends Thread {  
     public void run() { 
      System.out.println("starting a new thread"); 
     } 
} 

MAIN1類: Main1.java

public class Main1 { 
     public Main1() { 
      System.out.println("Constructor of main1 class."); 
     } 

     void main1_method() { 
      System.out.println("method of main 1 class"); 
     } 

     public static void main(String[] args) { 
      Main1 my = new Main1(); 
      Derived derivedThread = new Derived(); 
      derivedThread.start(); 
     } 
} 

說明:

1)類名總是大寫,你說得對,文件名必須是是一樣的。另外,構造函數和對構造函數的任何調用都必須大寫。

2)如果你把類放在同一個包中,你不需要導入它們。如果你有多個包,你可以這樣導入:import packageName.className;。最後不需要.java,嚴格來說就是類名。你也可以有嵌套的軟件包,所以你可能會看到諸如:import java.util.ArrayList;。這將使用Java包(內置)中的util包中的ArrayList類。您不必擔心在較小的項目上製作嵌套軟件包,但這就是概念。

3)注意我在Main1及其構造函數中添加了public修飾符。爲類名和方法以及類變量提供修飾符是一種很好的做法。有關修飾符的信息,請參閱this SO Question。對於初學者,你應該大多隻關心公共和私人。

我希望能夠對Java研究有所幫助,祝你好運。

+0

謝謝,這真的很有幫助。 – user3085866

相關問題