Pagina 2 van 3 Eerste 123 Laatste

Discussie: Java vraagje

  1. #16
    Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    10.429
    iTrader
    53 (100%)
    Reputation
    22/92
    Als je basisklasse een constructor implementeert met 1 of meerdere argumenten zonder de default constructor expliciet te programmeren dan kunnen afgeleide klassen geen default constructor meer implementeren.
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  2. #17
    Emerxill's schermafbeelding
    Lid sinds
    17/07/02
    Locatie
    Hasselt
    Berichten
    2.966
    iTrader
    0
    Reputation
    0/18
    Jawel, als je van slecht design houdt

    Code:
    public class Student extends Person {
    	private static int i;
    	
    	private Student() {
    		super(i);
    	}
    	
    	public static Student createStudent(int i) {
    		Student.i = i;
    		return new Student();		
    	}
    }
    If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization
    no votes  

  3. #18
    Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    10.429
    iTrader
    53 (100%)
    Reputation
    22/92
    Maarja, dat is geen klasse met een constructor met 1 of meer argumenten. Al goed dat je zelf aangeeft dat het slecht design is . Als persoon echter geen default constructor heeft zoals in de OP dan werkt je implementatie zelf niet.
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  4. #19
    forloRn_'s schermafbeelding
    Lid sinds
    23/11/03
    Locatie
    Landeurp
    Berichten
    1.775
    iTrader
    0
    Reputation
    10/17
    Ik zie nog altijd je punt niet Cycloon. Ik heb hier een base met een constructor met één of meer argumenten zonder default constructor en een afgeleide met een default constructor en dat compileert hoor:
    Code:
    class Base {
    	public Base(int i) {}
    }
    
    class Derived extends Base {
    	public Derived() {
    		super(123);
    	}
    }
    no votes  

  5. #20
    Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    10.429
    iTrader
    53 (100%)
    Reputation
    22/92
    Default constructor is created only if there are no constructors. If you define any constructor for your class, no default constructor is automatically created.
    Waarom jouw code compileert ben ik niet zeker eigenlijk. Maar wat in de quote staat is het standaard gedrag.

    Mogelijks werkt het omdat je zelf expliciet een constructor van de basisklasse oproept. Als je die super call weglaat compileert het waarschijnlijk niet meer.
    Laatst gewijzigd door Cycloon; 17 januari 2012 om 07:19
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  6. #21
    forloRn_'s schermafbeelding
    Lid sinds
    23/11/03
    Locatie
    Landeurp
    Berichten
    1.775
    iTrader
    0
    Reputation
    10/17
    Citaat Oorspronkelijk geplaatst door Cycloon Bekijk bericht
    Deze quote is verborgen omdat je deze gebruiker negeert. Weergeven
    Mogelijks werkt het omdat je zelf expliciet een constructor van de basisklasse oproept. Als je die super call weglaat compileert het waarschijnlijk niet meer.
    Uiteraard, je moet immers je Base initialiseren en dat kan maar op één manier: via super() de (enige) constructor aanroepen.

    Die quote van jou zegt gewoon wat hij zegt: als je geen constructors declareert, krijg je van de compiler een default constructor, en als je wel een constructor declareert, krijg je er geen. Er worden geen beweringen gedaan wat betreft constructors en inheritance.
    no votes  

  7. #22
    Emerxill's schermafbeelding
    Lid sinds
    17/07/02
    Locatie
    Hasselt
    Berichten
    2.966
    iTrader
    0
    Reputation
    0/18
    Citaat Oorspronkelijk geplaatst door Cycloon Bekijk bericht
    Deze quote is verborgen omdat je deze gebruiker negeert. Weergeven
    Maarja, dat is geen klasse met een constructor met 1 of meer argumenten. Al goed dat je zelf aangeeft dat het slecht design is . Als persoon echter geen default constructor heeft zoals in de OP dan werkt je implementatie zelf niet.
    Jawel, ik vertrek van Persoon van OP, die heeft nl geen default constructor.

    Voor de rest wil ik nog toevoegen aan forloRn_ zijn post dat in je constructor altijd default door de compiler super(); op de eerste regel wordt toegevoegd (indien er nog geen expliciete call naar een super-constructor is gedaan).
    Als je geen default constructor hebt, moet je zelf de super-constructor met argumenten aanroepen, zoals wij hebben gedaan.

    Ok, in praktijk zal zoiets zelden tegenkomen, tenzij je Indiër-code moet uitkuisen ofzo . Maar zulke voorbeeldjes helpen OP wel te begrijpen hoe de compiler en de vm zich gedraagt bij het aanmaken van objecten.
    If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization
    no votes  

  8. #23
    Emerxill's schermafbeelding
    Lid sinds
    17/07/02
    Locatie
    Hasselt
    Berichten
    2.966
    iTrader
    0
    Reputation
    0/18
    Citaat Oorspronkelijk geplaatst door Shift Bekijk bericht
    Deze quote is verborgen omdat je deze gebruiker negeert. Weergeven
    Nog een vraagje. Ik werk met eclipse. Stel ik heb dit :

    - Project A -> Package B -> Class C

    - Project D -> Package E -> Classe F

    Nu wil ik de klasse C aanspreken in F. Hoe doe ik dat ? Rechterklik op project D , properties, Java build Path en daar Proeject A aan toevoegen helpt niet echt.
    Ahja, Rechterklik op Project D, Properties, Project References, Project A aanvinken.
    If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization
    no votes  

  9. #24
    Shift's schermafbeelding
    Lid sinds
    25/02/04
    Locatie
    Vlaams Brabant
    Berichten
    2.131
    iTrader
    39 (98%)
    Reputation
    0/2
    Code:
    public class Persoon {
    	public Persoon() {
    		System.out.println("Persoon");
    	}
    
    	public static void main(String[] args) {
    		Persoon p = new Student();
    	}
    }
    Code:
    public class Student extends Persoon {
    	public Student() {
    		System.out.println("Student");
    	}
    	
    }
    Uitvoer:

    Persoon
    Student

    Vraag:

    Waarom wordt eerst Persoon afgedrukt en niet student ?
    no votes  

  10. #25
    NoGo's schermafbeelding
    Lid sinds
    22/08/11
    Locatie
    Borgloon
    Berichten
    1.414
    iTrader
    121 (100%)
    Reputation
    0/3
    Omdat eerst de constructor van de superklasse opgeroepen wordt?
    (='.'=)
    no votes  

  11. #26
    Shift's schermafbeelding
    Lid sinds
    25/02/04
    Locatie
    Vlaams Brabant
    Berichten
    2.131
    iTrader
    39 (98%)
    Reputation
    0/2
    Oke dat dacht ik al, ik was hier niet zeker want dat lijkt soms onlogisch
    no votes  

  12. #27
    blackrabbit's schermafbeelding
    Lid sinds
    25/07/02
    Locatie
    Brussel
    Berichten
    1.001
    iTrader
    5 (100%)
    Reputation
    1/2
    want dat lijkt soms onlogisch
    Als je snapt wat constructors doen, dan is er maar 1 logische manier.
    no votes  

  13. #28

    Lid sinds
    20/09/04
    Locatie
    Kortrijk / Gent
    Berichten
    7.177
    iTrader
    1 (100%)
    Reputation
    3/43
    Citaat Oorspronkelijk geplaatst door Shift Bekijk bericht
    Deze quote is verborgen omdat je deze gebruiker negeert. Weergeven
    Oke dat dacht ik al, ik was hier niet zeker want dat lijkt soms onlogisch
    De klasse student is een 'extensie' op de klasse persoon en dus moeten de gegevens van de klasse persoon beschikbaar zijn voor de klasse student zijn constructor uitvoert.
    no votes  

  14. #29
    Cycloon's schermafbeelding
    Lid sinds
    17/01/04
    Locatie
    Melle
    Berichten
    10.429
    iTrader
    53 (100%)
    Reputation
    22/92
    Citaat Oorspronkelijk geplaatst door blackrabbit Bekijk bericht
    Deze quote is verborgen omdat je deze gebruiker negeert. Weergeven
    Als je snapt wat constructors doen, dan is er maar 1 logische manier.
    Zo logisch is het allemaal niet eigenlijk want er zijn talen waar het anders is. Het zijn niet de meest gebruikte maar het toont wel aan dat er andere ideeën over bestaan.
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  15. #30
    blackrabbit's schermafbeelding
    Lid sinds
    25/07/02
    Locatie
    Brussel
    Berichten
    1.001
    iTrader
    5 (100%)
    Reputation
    1/2
    Tging hier dan ook over Java...
    (maar laat me gerust weten welke talen het anders doen & eventueel hoe&waarom)
    no votes  

Pagina 2 van 3 Eerste 123 Laatste

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •  

Inloggen

Inloggen