如何从另一个类方法调用已创建对象的方法?

时间:2016-05-20 02:23:54

标签: java constructor static static-methods

我正在尝试一个小程序,其中我有两个带有重载构造函数的类。 首先,我创建了第一个类的对象,传递给它的构造函数一个整数。然后我创建了第二个类的对象传递给它的构造函数一个字符串。

Blabla类包含一个run()方法,该方法应调用已在 main 方法中创建的Bloblo对象 t 的方法 afficher 。但是,我在执行此操作时遇到了麻烦,因为构造函数已经过载,我应该传递一些参数。并且Blabla对象 ts 不知道最初传递给Bloblo构造函数的值: 2345

这是一个例子,所以我明确表示:

public class Trial {

  public static void main(String[] args) {

            Bloblo t = new Bloblo(2345);
            Blabla ts = new Blabla("Imad");
            ts.run();
          }
}

public class Bloblo {
        private int port;
        public Bloblo(int leport)
        {
            port = leport;
            System.out.println("au debut le port est: " + port);
        }
        public void afficher(String nom)
        {
            System.out.println("on va afficher dans BLOBLO: " + nom + "\net le port est: "+ port);

        }
}

public class Blabla implements Runnable{

        String Name = "";

        public Blabla(String nom)
        {
            Name = nom;
        }

        public void run()
        {
            System.out.println("voici le nom: " + Name);
            Bloblo obj = new Bloblo();
            obj.afficher(Name);
        }
}

这里的想法是我无法创建实例obj,因为我必须将port作为参数,我不知道它是什么端口。

3 个答案:

答案 0 :(得分:1)

只需使用组合:这就是使Bloblo成为Blabla的一个属性。

public class Blabla implements Runnable{

    String name = "";
    Bloblo obj;

    public Blabla(Bloblo obj, String name)
    {
        this.name = name;
        this.obj = obj
    }

    public void run()
    {
        System.out.println("Here is the name: " + name);
        obj.display(name);
    }
}

public class Trial {

    public static void main(String[] args) {

        Bloblo t = new Bloblo(2345);
        Blabla ts = new Blabla(t, "Imad");
        ts.run();
    }
}

答案 1 :(得分:1)

您应该将对BloBlo的引用传递给BlaBla构造函数并将其存储在字段中。

public class Trial {

  public static void main(String[] args) {

            Bloblo t = new Bloblo(2345);
            Blabla ts = new Blabla("Imad", t);
            ts.run();
          }
}

public class Bloblo {
        private int port;
        public Bloblo(int leport)
        {
            port = leport;
            System.out.println("au debut le port est: " + port);
        }
        public void afficher(String nom)
        {
            System.out.println("on va afficher dans BLOBLO: " + nom + "\net le port est: "+ port);

        }
}

public class Blabla implements Runnable{

        String Name = "";
        Bloblo bloblo;
        public Blabla(String nom, Bloblo b)
        {
            Name = nom;
            bloblo = b;
        }

        public void run()
        {
            System.out.println("voici le nom: " + Name);

            bloblo.afficher(Name);
        }
 }

答案 2 :(得分:0)

您至少有两个选项,您可以将端口传递给BlaBla,也可以提供实例化的BloBlo

public class Blabla implements Runnable{

    String Name = "";
    BloBlo myBloBLo;

    public Blabla(String nom, int leport)
    {
        Name = nom;
        myBloBlo = new Bloblo(leport);
    }

    public Blabla(String nom, Bloblo bloblo)
    {
        Name = nom;
        myBloBlo = bloblo;
    }


    public void run()
    {
        System.out.println("voici le nom: " + Name);
        myBloBLo.afficher(Name);
    }
}