0

タイトルが正しいかどうかわかりません。私はテレビのようないくつかのクラスを持っています、そして私はそれらすべてをただ一つのクラスで使いたいです。別のクラスのTvのメソッドを呼び出すことは可能ですか?もしそうなら、クラスTvのコンストラクターを修正する必要がありますか?(TSはインターフェースです)。

class Tv implements TS{

    private String v;

    public Tv(String v){
            this.v = v;
    }

    public void open(){
            System.out.println("open");
    }

        public void volume(String v){
        ...
        }

}

public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
    }
}

私はこれを試しました:

public class RunTv {
    Remote r = new Remote("+");
    Tv t = new Tv("+");
    t.open();
}

identifier expected after this tokenIDEは私に「 。」を思い出させます。変更する必要がありますTvRunTv

4

3 に答える 3

1

はい、メソッド定義に含まれている場合は、他のクラスでオブジェクトをpublic作成した後でそれらのメソッドを呼び出すことができます。Tv

publicはアクセス修飾子ですが、パブリックメソッドは、その特定のクラスのオブジェクトを作成した後にのみ呼び出すことができます。このような、

Tv tv = new Tv("A", "B");
tv.open();

ドキュメントも読むとよいでしょう。Javaプログラムの書き方を段階的に説明します。

于 2012-06-20T22:50:09.630 に答える
1

最初の問題は、Frozen PeaのOwlとRoddyによってすでに回答されていますが、要約すると、次のようになります。パブリックであり、メソッドを含むクラスのインスタンスがある限り、別のクラスのメソッドを呼び出すことができます。

identifier expected..." "エラーに関するその他の問題については、を変更する必要がありますRunTv

t.open()メソッドブロックの外部を呼び出すことはできません。次のように変更した場合:

public class RunTv {
    public void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}

次に、メソッドを呼び出すたびに、andopenNewTvの新しいインスタンスが作成され、インスタンス内のメソッドが呼び出されます。呼び出すには、次のようにメソッド内にのインスタンスを作成できます。RemoteTvopenTvopenNewTvRunTvmain

public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        RunTv runTv = new RunTv();
        runTv.openNewTv();
    }
}

新しいインスタンスを開く必要があるたびに新しいインスタンスを作成したくない場合はTv、メソッドを静的にすることができます。つまり、インスタンスではなく、クラス自体に属します(これらのことをよりよく理解するには、これを読む必要があります) )次のようにメソッドを静的にすることができます。

public class RunTv {
    public static void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}

これで、次のようなopenNewTvインスタンスを作成せずに呼び出すことができます。RunTv

public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        runTv.openNewTv();
    }
}

お役に立てれば。:)

于 2012-06-20T23:20:03.623 に答える
0

publicメソッドが-のように定義されている場合、例のようにpublic void open()、別のクラス内からTVオブジェクトでこれらのメソッドを呼び出すことができます。

したがって、TvSetクラスでは、メインメソッドで:

public class TvSet {
    public static void main(String[] args) {
        Tv t = new Tv("+", "+");
        t.open(); // this is valid
    }
 }

また、とが両方ともTvSet同じTvパッケージに含まれている場合は、メソッドで-の代わりにデフォルトのアクセス修飾子を使用できますpublicvoid open()の代わりにpublic void open()

このような方法があった場合Tv

private void close() { 
    System.out.println("CLOSED"); 
}

次に、これを行うことができませんでした:

public class TvSet {
    public static void main(String[] args) {
        Tv t = new Tv("+", "+");
        t.close(); // this WILL NOT work
    }
 }

これは、メソッドがprivateであり、プライベートメソッドはそのクラス内でのみ呼び出すことができるためです。

于 2012-06-20T22:54:09.683 に答える