2016-05-20 3 views
0

Я пробую небольшую программу, где у меня есть два класса с перегруженными конструкторами. Сначала я создаю объект первого класса, передавая его конструктору целое число. Затем я создаю объект второго класса, передавая его конструктору строку.Как вызвать метод уже созданного объекта из метода другого класса?

Класс Blabla содержит метод Run(), который должен вызвать метод afficher от Bloblo объекта т уже созданной в главном метода . Однако у меня возникают проблемы с этим, поскольку конструктор перегружен, и я должен передать некоторые аргументы. И объект Blabla ts не знает значения, первоначально переданного конструктору Bloblo: .

Вот пример так Я ясно:

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, потому что я должен дать порт в качестве параметра, и я не знаю, какой порт он ,

+0

Попробуйте передать ссылку на ваш BloBlo в конструктор BlaBla и сохранить его в поле. – glee8e

+0

Извините, но я не совсем понял. Я начинающий в JAVA, вы можете отправить пример или более подробную информацию, пожалуйста? – iMadz

ответ

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