簡體   English   中英

如何從另一個類方法調用已創建對象的方法?

[英]How to call a method of an already created object from another class method?

我正在嘗試一個小程序,其中有兩個帶有重載構造函數的類。 首先,我創建第一個類的對象,該對象將其整數傳遞給其構造函數。 然后,我創建第二個類的對象,並將其傳遞給構造函數一個字符串。

類BLABLA包含應該調用的主要方法已創建Bloblo對象T的方法afficher一個run()方法。 但是,由於構造函數已重載,所以我很難這樣做,我應該傳遞一些參數。 而且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作為參數,並且我不知道它是哪個port。

只需使用組合即可:這使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();
    }
}

您應該將對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);
        }
 }

您至少有兩個選擇,要么可以將端口傳遞給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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM