web-dev-qa-db-ja.com

Javaクラスを別のJavaファイルのあるファイルから拡張する

あるJavaファイルを別のJavaファイルに含めるにはどうすればよいですか?

たとえば、2つのJavaファイルがある場合、1つはPerson.Javaと呼ばれ、もう1つはStudent.Javaと呼ばれます。 Person.JavaStudent.Javaを含めると、Person.JavaStudent.Javaからクラスを拡張できます。

57
Jin Yong

2つのファイルを同じディレクトリに置くだけです。以下に例を示します。

Person.Java

public class Person {
  public String name;

  public Person(String name) {
    this.name = name;
  }

  public String toString() {
    return name;
  }
}

Student.Java

public class Student extends Person {
  public String somethingnew;

  public Student(String name) {
    super(name);
    somethingnew = "surprise!";
  }

  public String toString() {
    return super.toString() + "\t" + somethingnew;
  }

  public static void main(String[] args) {
    Person you = new Person("foo");
    Student me = new Student("boo");

    System.out.println("Your name is " + you);
    System.out.println("My name is " + me);
  }
}

生徒を実行すると(メイン機能があるため)、望ましい結果が得られます。

Your name is foo
My name is boo  surprise!
60
Chris Bunch

すべての説明から欠落しているのは、Javaがクラス名=ファイル名という厳密な規則を持っているという事実です。クラス「Person」がある場合の意味は、「Person.Java」という名前のファイルにある必要があります。したがって、あるクラスが「Person」にアクセスしようとしても、「Person.Java」でなければならないため、ファイル名は必要ありません。

C/C++については、まったく同じ問題があります。答えは、(クラス名に一致する新しいファイルに)新しいクラスを作成し、パブリック文字列を作成することです。これが「ヘッダー」ファイルになります。次に、「extends」キーワードを使用してメインファイルで使用します。

あなたの答えは次のとおりです。

  1. Include.Javaというファイルを作成します。このファイルに、これを追加します:

    public class Include {
        public static String MyLongString= "abcdef";
    }
    
  2. 別のファイル、たとえばUser.Javaを作成します。このファイルに、次を入力します。

    import Java.io.*;
    
    public class User extends Include {
        System.out.println(Include.MyLongString);
    }
    
26
FractalSpace

JavaにはCの方法が含まれていません。代わりに、JavaはJavaクラスを含むリソースのリストであるクラスパスと呼ばれる概念を使用します。 JVMはクラスパス上の任意のクラスに名前でアクセスできるため、クラスを拡張し、単に宣言するだけで型を参照できる場合。 includeステートメントJavaに近いものは 'import'です。クラスはfoo.bar.Bazのような名前空間に分割されるため、quxパッケージを使用していて、foo.bar.Bazのフルネームを使用せずにBazクラスを使用する場合は、 Javaファイルの先頭にあるimportステートメントは次のようになります:import foo.bar.Baz

19
Jherico

あなたはしません。

Person with Studentを拡張する場合は、次の操作を行います。

public class Student extends Person
{
}

そして、両方のクラスをコンパイルするときに、一方が他方を見つけることができることを確認してください。

何IDEを使用していますか?

3