我不确定标题是否正确。我有几个像电视这样的课程,我只想在一个课程中使用它们。可以在另一个类中调用电视中的方法吗?如果是这样,是否需要修改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();
}


IDE会提醒我“ identifier expected after this token”。我应该修改Tv还是RunTv

最佳答案

冻结豌豆的Owl和Roddy已经回答了第一个问题,但总结一下:是的,只要它们是公共的,并且您有一个包含该方法的类的实例,就可以在另一个类中调用方法。

对于与“ identifier expected...”错误有关的其他问题,应更改RunTv

您不能在方法块之外调用t.open()。如果您将其更改为以下内容:

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


然后,每当调用openNewTv方法时,它将创建RemoteTv的新实例,然后将在open实例中调用Tv方法。要调用openNewTv,可以在RunTv方法中创建main的实例,如下所示:

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


如果不想每次都要打开新的Tv时都创建一个新实例,则可以将方法设为静态,这意味着该方法将不属于任何实例,而是属于类本身(为更好地理解这些内容,您可以应该读为this
您可以像这样将方法设为静态:

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();
    }
}


希望这可以帮助。 :)

10-08 06:25