Wywołanie metody obiektu innej klasy w klasie

0

Hejka. Ogólnie zaczynam dopiero naukę programowania w Javie. Zacząłem pisać coś swojego i mam takie pytanie.
Mianowicie. Stworzyłem sobie kilka klas. W nich są tam jakieś metody do obsługi pól prywatnych tych klas. Potem w innej klasie prywatnymi polami są obiekty tych właśnie klas.
Pytanie moje jest takie czy jeśli napisałem raz metody do obsługi jednej klasy to czy w tej klasie której "łączę" sobie obiekty innych klas muszę je pisać od nowa (korzystając z tych poprzednich) by móc z nich korzystać czy jest jakaś możliwość korzystanie z nich bezpośrednio?

Dla zobrazowania:

class Klasa1{
   private int pole1, pole2, pole3;
   // public Klasa1(){ .. jakis tam konstruktor }
   public void metoda1(){}
   public void metoda2(){}
}

class Klasa2{
   private double pole1, pole2, pole3;
   // public Klasa2(){ .. jakis tam konstruktor }
   public void metoda1(){}
   public void metoda2(){}
}

class Klasa3{
   private String pole1;
   private Klasa1 obiekt1;
   private Klasa2 obiekt2;

   // public Klasa3(){ .. jakis tam konstruktor }
   public void metoda1(){ 
      //obiekt1.metoda1(); // tylko taki sposób?  
   }   
}

Chodzi o to czy jest możliwość odwołać się w obiekcie Klasa3 do metod obiektów w klasie (np. obiekt1, obiekt2) jakoś bez tworzenia w Klasa3 metod do ich obsługi.
Jeśli to głupie pytanie to sorka ale dopiero się uczę :)
Z góry dzięki za odpowiedzi.

0

Musisz w klasie Klasa3 stworzyć obiekt typu Klasa1

class Klasa3{
   private String pole1;
   private Klasa1 obiekt1;
   private Klasa2 obiekt2;
 
   // public Klasa3(){ .. jakis tam konstruktor }
   Klasa1 ob = new Klasa1();
   ob.metoda1();
}

Jeśli metoda metoda1 jest bezstanowa, to możesz zrobić tak:

class Klasa1
{
    public static void metoda1(){}
    ...
}

a w klasie Klasa3

   Klasa1.metoda1();
0

Hmm... troszkę mnie to nie urządzą ponieważ obiekty w klasie dopiero tworzę w konstruktorze klasy czyli w tym przypadku Klasa3. Do konstruktora przekazuję odpowiednie dane którymi inicjuję dopiero obiekt wewnętrzny.
Coś w tym stylu:

class Klasa1{
   private int pole1, pole2, pole3;
   public Klasa1(int p1, int p2, int p3){
      pole1 = p1;
      pole2 = p2;
      pole3 = p3;
   }

   public void setPole1(int p){
      p1 = p;
   }
   public int getPole2(){
      return pole2;
   }
}
 
class Klasa2{
   private double pole1, pole2, pole3;
   
   public Klasa2(double p1, double p2, double p3){
      pole1 = p1;
      pole2 = p2;
      pole3 = p3;
   }

   public void setPole1(int p){
      p1 = p;
   }
   public double getPole2(){
      return pole2;
   }
}
 
class Klasa3{
   private String pole1;
   
   private Klasa1 obiekt1;
   private Klasa2 obiekt2;
 
   public Klasa3(int p1, int p2, int p3, double d1, double d2, double d3, String s){ 
      pole1 = s;
      obiekt1 = new Klasa1(p1, p2, p3);
      obiekt2 = new Klasa2(d1, d2, d3);
   }
   public double getPole2(){ 
      return obiekt2.getPole2(); // tylko taki sposób?  
   }   
}
0

Teraz tak sobie myślę czy po prostu nie zrobić tych obiektów jako protected i będzie spokój :D
Jednak dalej ciekawi mnie ten fakt czy do tak napisanej klasy jak wcześniej trzeba robić osobne metody, gettery i settery.

1 użytkowników online, w tym zalogowanych: 0, gości: 1