Wątek przeniesiony 2021-04-21 01:19 z C# i .NET przez cerrato.

klasa abstrakcyjna z chronionymi atrybutami

0

Mam zaimplementować abstrakcyjną klasę z chronionymi atrybutami przy czym rodzajSilnika ma być enumeracją.

enum rodzajSilnika {
   BENZYNA,
   DIESEL
}
abstract class Maszyna {

    protected String marka;
    protected String nazwa;
    protected double pojemnoscSilnika;

    Maszyna(String m, String n, double p) {
        setM(m, n, p);
    }

    void setM(String m, String n, double p) {
        marka = m;
        nazwa = n;
        pojemnoscSilnika = p;
    }

    public String toString() {
        return "Marka =\t" + marka + "Pojemność silnika =\t" + pojemnoscSilnika + "Nazwa =\t" + nazwa;
    }
}

abstract class Pojazd extends Maszyna {  /////////////////////////////////////////////////
        protected final rodzajSilnika rodzsil;

    Pojazd(String m, String n, double p, rodzajSilnika r) {
        super(m, n, p);
        rodzsil = r;
    }
        public String toString() {
            return super.toString() + "\n" + "Rodzaj silnika =\t" + rodzsil;
        }

        static class Pojazd1 {

            public void main(String[] args) {
                Pojazd1 auto1 = new Pojazd1(OPEL, CORSA, 1.4, rodzajSilnika.BENZYNA);
                Pojazd1 auto2 = new Pojazd1(HONDA, CIVIC, 1.6, rodzajSilnika.DIESEL);
                Pojazd1 auto3 = new Pojazd1(AUDI, RS7, 4.0, rodzajSilnika.BENZYNA);

                System.out.println("AUTO1: " + auto1);
                System.out.println("AUTO2: " + auto2);
                System.out.println("AUTO3: " + auto3);

            }
        }
}

Nie wiem co robię źle, w intelliJ mam 6 błędów Cannot resolve symbol OPEL/CORSA/HONDA/CIVIC/AUDI/RS7

5

Jam beształ kolegów za rzucanie nullami w metodach prywatnych co miały Stringa zwrócić. I beształem innych za brak hermetyzacji lub też za brak polimorfizmu.
Jam widział cudy na Świecie, alem nie uznał nigdzie odpalania metody main z klasy wewnętrznej w klasie abstrakcyjnej.

Kompilator tego nie zrozumie.

dobra, co prawda już środa, ale mam jeden myk! zrób proszę klasę o nazwie Main i tam miej sobie tą główną metodę main.
w teraz w tej metodzie skorzystaj z tzw. kompozycji, czyli wywołaj klasę Pojazd np.new Pojazd

Potem już z górki

3

@stokrotka221b:

public enum RodzajSilnika {
    BENZYNA,
    DIESEL
}

abstract class Maszyna {

    String marka;
    String nazwa;
    double pojemnoscSilnika;

    Maszyna(String m, String n, double p) {
        setM(m, n, p);
    }

    void setM(String m, String n, double p) {
        marka = m;
        nazwa = n;
        pojemnoscSilnika = p;
    }

    public String toString() {
        return "Marka =\t" + marka + "Pojemność silnika =\t" + pojemnoscSilnika + "Nazwa =\t" + nazwa;
    }
}

class Pojazd extends Maszyna {
    private final RodzajSilnika rodzsil;

    Pojazd(String m, String n, double p, RodzajSilnika rodzajSilnika) {
        super(m, n, p);
        rodzsil = rodzajSilnika;
    }
    public String toString() {
        return super.toString() + "\n" + "Rodzaj silnika =\t" + rodzsil;
    }
}

class Main {
    public static void main(String[] args) {
        Pojazd auto1 = new Pojazd("OPEL", "CORSA", 1.4, RodzajSilnika.BENZYNA);
        Pojazd auto2 = new Pojazd("HONDA", "CIVIC", 1.6, RodzajSilnika.DIESEL);
        Pojazd auto3 = new Pojazd("AUDI", "RS7", 4.0, RodzajSilnika.BENZYNA);

        System.out.println("AUTO1: " + auto1);
        System.out.println("AUTO2: " + auto2);
        System.out.println("AUTO3: " + auto3);

    }
}

Chyba o to chodziło. Kompiluje się itp.

Miłego dnia!

no dobra, nie "chronię" jak w zadaniu... ale już masz kawę na ławę...

kolejny level to polimorfizm, bo tego tutaj nie zastosowałem, bo się zgapiłem. Interfejsy w Javie Twoim przyjacielem, więc da się lepiej

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