我不确定标题是否正确。我有几个像电视这样的课程,我只想在一个课程中使用它们。可以在另一个类中调用电视中的方法吗?如果是这样,是否需要修改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
方法时,它将创建Remote
和Tv
的新实例,然后将在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();
}
}
希望这可以帮助。 :)