2014-02-21 123 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

相关问题