Klasy i metody

0

public class Vehicle {
private int numberOfWheels;
private Engine engine;

public Vehicle(Engine engine, int numberOfWheels) {
    this.engine = engine;
    this.numberOfWheels = numberOfWheels;
}

}

public class Car extends Vehicle {
private static final int NUMBER_OF_WHEELS = 4;

public Car(Engine engine) {
    super(engine, NUMBER_OF_WHEELS);
}

}

Moje pytanie brzmi co w tym kodzie oznacza Engine engine tzn spotkałem się że w konstruktorach może byś np string name albo int age ,

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

engine to referencja/wskaźnik do obiektu klasy Engine. Można np. wcześniej utworzyć taki obiekt: Engine eng = new Engine(); po czym przekazać eng w konstruktorze, tworząc obiekt klasy Car.

Pole prywatne private Engine engine, będące także referencją/wskaźnikiem do obiektu klasy Engine, zostanie zainicjalizowane referencją/wskaźnikiem z konstruktora klasy tylko, że w tym wypadku wskazującą już na konkretny obiekt, utworzony w przykładzie: Engine eng = new Engine();.

edytowany 1x, ostatnio: grzesiek51114
0
grzesiek51114 napisał(a):

engine to referencja/wskaźnik do obiektu klasy Engine. Można np. wcześniej utworzyć taki obiekt: Engine eng = new Engine(); po czym przekazać eng w konstruktorze, tworząc obiekt klasy Car.

Pole prywatne private Engine engine, będące także referencją/wskaźnikiem do obiektu klasy Engine, zostanie zainicjalizowane referencją/wskaźnikiem z konstruktora klasy tylko, że w tym wypadku wskazującą już na konkretny obiekt, utworzony w przykładzie: Engine eng = new Engine();.

No dobra ale to oznacza np że mogę używać jakichś konkretnych metod klasy Engine ?

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

Tak. Masz referencję wskazująca na obiekt więc możesz używać metod tego obiektu.

0
grzesiek51114 napisał(a):

Tak. Masz referencję wskazująca na obiekt więc możesz używać metod tego obiektu.

Czyli np mógłbym napisać sobie obiekt Garnek garnek = new garnek , napisać jego metody a później utworzyć konstruktor np gotowanie(Garnek garnek, int pojemność, int temperatura ) ??

WY
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:134
0
Kopiuj
public class Garnek {
      private double pojemnosc;

       public Garnek() { pojemnosc = 18.8; }
       public Garnek(double p) { pojemnosc = p; }
       public double getPojemnosc() { return pojemnosc; }
       public void setPojemnosc(double p) { pojemnosc = p; }
       // ... inne metody
}


public class Gotowanie {
       public Garnek garnek;
       public List<String> skladniki;

      public Gotowanie(Garnek g, List<String> s) {
             garnek = g;
             skladniki = s;
      }

     public void gotuj() {
             System.out.println("Gotuję w garnku o pojemności: " + garnek.getPojemnosc());
             System.out.println("Składniki:");
             for(String s : skladniki) 
                  System.out.println(s);
     }
}

0

W Twoim przypadku klasa Gotowanie powinna być interfejsem, który jest implementowany w klasie garnek. Nazywanie klas czasownikami jest moim zdaniem złym nawykiem.

Patryk27
Gotowanie to nie jest czasownik.
vpiotr
"Gotowanie" to rzeczownik odczasownikowy a po ludzku umiejetnosc.
0

Racja Gotowanie - to nie czasownik(zapędziłem się), a raczej powinienem napisać, że dobrą praktyką jest używanie rzeczowników konkretnych jako nazw klas. Czy jednak zgadzacie się, że Gotowanie mogłoby być interfejsem?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.