如何在另一个类的不同包中创建类的对象

时间:2014-02-21 18:53:46

标签: java class inheritance

我是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");

    }

    } 

如何在main中创建派生类对象并将其包含在main1.java文件中?

我认为我并不完全理解类如何在Java中工作以及必须使用哪个类路径。我有一个网络项目的截止日期,我非常落后所以请帮助我!

2 个答案:

答案 0 :(得分: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;。这将使用在util包中找到的ArrayList类,它位于java包中(内置)。您不必担心在较小的项目上创建嵌套包,但这就是概念。

3)注意我将public修饰符添加到Main1及其构造函数中。最好为类名和方法以及类变量提供修饰符。有关修饰符的信息,请参阅this SO Question。对于初学者,你应该只关注公共和私人。

我希望这对你的Java研究有所帮助,祝你好运。

答案 1 :(得分: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");
    }
} 

我删除了构造函数和一个未使用的方法。