Javaで同じパッケージ内の他のクラスからメソッドを呼び出したり、フィールドにアクセスしたりするにはどうすればよいですか。

簡単

私はJAVAプログラミングの初心者です。私はゲームを作成している私のコースプロジェクトに取り組んでいます。このゲーム用に2つのクラスを作成しましたが、それらは同じパッケージに含まれています。クラスBでは、クラスAからメソッドを呼び出し、フィールドにもアクセスする必要があります。クラスAで定義されているメソッドにアクセスするためのコードはどのようにすべきですか?私はオンラインで解決策を検索し、誰かが次のようなコードを書くことを提案しました:

Classname.methodname(args)

ただし、コンパイルエラーがあります(私は思います)

error: cannot find symbol  public A newA;  symbol:   class A    location: class B

私が書いたコードは次のようなものです:

newA.moveRight(A.getANumber());

レッスンから学んだメソッドの1つは、クラスを拡張してメソッドにアクセスすることです。しかし、それらは2つの異なるクラスであるため、クラスを拡張することはできません。

誰かが私が犯した間違いの理由やこの問題の解決策を教えてもらえますか?助けてくれてありがとう。

ルーク・メライア

この問題を解決するには、2つの方法があります。1つはメソッドを静的にすることで、もう1つは他のクラスのインスタンスを作成することです。

あなたがクラスをしなければならないとしましょう、ClassAそしてClassB

ClassA

ClassAには静的メソッドとパブリック初期化子がないため、メソッドを呼び出す唯一の方法ClassAは、そのインスタンスを作成することです。

public class ClassA{

    public ClassA(){
        //Intentionally blank
    }

    public void doSomething(int anInt){
        //Intentionally blank
    }

    public int doSomethingElse(){
        return -1;
    }
}

ClassB

ClassB にはプライベート初期化子と静的メソッドがあるため、インスタンス化できず、クラスのインスタンスがなくてもそのメソッドを呼び出すことができます。

public class ClassB{

    private ClassB(){
        //Intentionally blank
    }

    public static void doSomething(int anInt){
        //Intentionally blank
    }

    public static int doSomethingElse(){
        return -1;
    }
}

ここで、次のコードがあるとします。

public class ClassMain{

    public static void main(String... args){
        ClassB classB = new ClassB();//Will throw an error
        ClassA classA = new ClassA();//Will compile fine

        ClassB.doSomething(ClassB.doSomethingElse());//Will compile fine
        classB.doSomething(classB.doSomethingElse());//Will give a warning

        ClassA.doSomething(ClassA.doSomethingElse());//Will throw an error
        classA.doSomething(classA.doSomethingElse());//Will compile fine
    }
}

からメソッドを呼び出すには、そのメソッドを呼び出すためにClassAinstance(ClassA classA = new ClassA();を定義する必要があります。これは、メソッドがクラスメソッドではないためです。

からメソッドを呼び出すにClassBは、クラス名(ClassB.doSomethingElse();)を使用してメソッドにアクセスするだけですこれを使用できる理由ClassBは、そのメソッドがstaticクラスメンバーあり、そのためであるためです

概要

メソッドをクラス名で呼び出すには、メソッドが静的である必要があります。静的でない場合は、クラスのインスタンスが必要になります。

これは、クラスのインスタンス化に関するオラクルのチュートリアルです。これは、クラスメンバーに関するオラクルのチュートリアルです。

継承や静的メンバーなどを完全に理解するために、それらを一読することをお勧めします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ