Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 课堂互动_Java - Fatal编程技术网

Java 课堂互动

Java 课堂互动,java,Java,我不确定标题是否准确。我有好几门课,比如电视,我想在一门课上使用它们。可以在另一个类中调用Tv中的方法吗?如果是这样,我是否需要在课堂上修改构造函数?(TS是一个接口) 我试过这个: public class RunTv { Remote r = new Remote("+"); Tv t = new Tv("+"); t.open(); } IDE提醒我“此标记后需要的标识符”“我应该修改Tv还是RunTv?是,如果方法定义中包含public,这意味着您可以在其他类中

我不确定标题是否准确。我有好几门课,比如电视,我想在一门课上使用它们。可以在另一个类中调用Tv中的方法吗?如果是这样,我是否需要在课堂上修改构造函数?(TS是一个接口)

我试过这个:

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

IDE提醒我“
此标记后需要的标识符”
“我应该修改
Tv
还是
RunTv

是,如果方法定义中包含
public
,这意味着您可以在其他类中创建
Tv
对象后调用这些方法

public
是访问修饰符,但是只能在创建该特定类的对象后调用public方法。像这样,

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

阅读也很好,它将指导您如何一步一步地编写Java程序。

如果您的方法定义为
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
在同一个包中,您可以在方法上使用默认访问修饰符,而不是
public
——例如
void open()
而不是
public void open()

如果
Tv
有这样一种方法:

private void close() { 
    System.out.println("CLOSED"); 
}
public class RunTv {
    public void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        RunTv runTv = new RunTv();
        runTv.openNewTv();
    }
}
public class RunTv {
    public static void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        runTv.openNewTv();
    }
}
那么你不能这样做:


这是因为该方法是私有的,并且只能在该类中调用私有方法。

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

对于“
预期标识符…”
”错误的其他问题,您应该更改
RunTv

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

private void close() { 
    System.out.println("CLOSED"); 
}
public class RunTv {
    public void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        RunTv runTv = new RunTv();
        runTv.openNewTv();
    }
}
public class RunTv {
    public static void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        runTv.openNewTv();
    }
}
然后,无论何时调用
openNewTv
方法,它都将创建
Remote
Tv
的新实例,然后在
Tv
实例中调用
open
方法。要调用
openNewTv
,可以在
main
方法中创建
RunTv
的实例,如下所示:

private void close() { 
    System.out.println("CLOSED"); 
}
public class RunTv {
    public void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        RunTv runTv = new RunTv();
        runTv.openNewTv();
    }
}
public class RunTv {
    public static void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        runTv.openNewTv();
    }
}
如果您不想每次打开新的
Tv
时都创建一个新实例,那么可以将该方法设置为静态,这意味着它不属于任何实例,而是属于类本身(为了更好地理解这些内容,您应该阅读) 您可以将该方法设置为静态,如下所示:

private void close() { 
    System.out.println("CLOSED"); 
}
public class RunTv {
    public void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        RunTv runTv = new RunTv();
        runTv.openNewTv();
    }
}
public class RunTv {
    public static void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        runTv.openNewTv();
    }
}
现在,您可以调用
openNewTv
,而无需创建
RunTv
的实例,如下所示:

private void close() { 
    System.out.println("CLOSED"); 
}
public class RunTv {
    public void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        RunTv runTv = new RunTv();
        runTv.openNewTv();
    }
}
public class RunTv {
    public static void openNewTv()
    {
       Remote r = new Remote("+");
       Tv t = new Tv("+");
       t.open();
    }
}
public class TvSet{
    public static void main(String args[]){
        Tv t = new Tv("+");
        runTv.openNewTv();
    }
}

希望这有帮助。:)

我遇到了一些新问题,我已经修改了这个问题。