Archief - Java vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

forloRn_

Legacy Member
Cycloon zei:
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.

Emerxill

Legacy Member
Cycloon zei:
Maarja, dat is geen klasse met een constructor met 1 of meer argumenten. Al goed dat je zelf aangeeft dat het slecht design is :p. 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 :p. Maar zulke voorbeeldjes helpen OP wel te begrijpen hoe de compiler en de vm zich gedraagt bij het aanmaken van objecten.

Emerxill

Legacy Member
Shift zei:
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.

Shift

Legacy Member
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 ?

Shift

Legacy Member
Oke dat dacht ik al, ik was hier niet zeker want dat lijkt soms onlogisch :p

MilM

Legacy Member
Shift zei:
Oke dat dacht ik al, ik was hier niet zeker want dat lijkt soms onlogisch :p

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.

Cycloon

Legacy Member
blackrabbit zei:
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.

blackrabbit

Legacy Member
Tging hier dan ook over Java...
(maar laat me gerust weten welke talen het anders doen & eventueel hoe&waarom)

Shift

Legacy Member
Ben ik weer, laatste vraagje. Ik slaag vaak collections door elkaar. De 5 die ik moet kennen:

Arraylist, Hashmap, Hashset, Treemap, Treeset. Ik heb me al suf gezocht achter een mooi overzichtje dus probeer ik er zelf 1 te maken:


Arraylis: Ongeordend, mag duplicaten en null bevatten

Hashmap: Ongeordend, mag geen duplicaten(key) bevatten, Key & Value

Treemap: Geordend, mag geen duplicaten(key) bevatten, Key & Value

Treeset: Geordend, mag geen duplicaten bevatten

Hashset: Ongeordend

Klopt dit een beetje ?

forloRn_

Legacy Member
Een List (en dus ook een ArrayList) is per definitie geordend en een Set (en dus ook een HashSet) mag per definitie geen duplicaten bevatten.

Cycloon

Legacy Member
Volgens mij wordt "geordend" hier in 2 contexten gebruikt. Een list is geordend in de zin dat alles in volgorde blijft staan zoals het is toegevoegd (itt tot bv. Een treemap). Het is ongeordend in de zin dat de input niet gesorteerd wordt (wat bij een treemap wel "min of meer" gebeurt bij de keys).

Shift

Legacy Member
Idd, met geordend bedoel ik niet de volgorde van input, maar hoe ze gesorteeds worden op vb key.

Cycloon

Legacy Member
De beste manier om die te leren kennen is door er met te werken en te experimenteren (zoals alles in de IT wereld). Je kan het ook proberen memoriseren, maar dat ben je zo weer vergeten.

NeverwinterX

Legacy Member
Shift zei:
Ben ik weer, laatste vraagje. Ik slaag vaak collections door elkaar. De 5 die ik moet kennen:

Arraylist, Hashmap, Hashset, Treemap, Treeset. Ik heb me al suf gezocht achter een mooi overzichtje dus probeer ik er zelf 1 te maken:


Arraylis: Ongeordend, mag duplicaten en null bevatten

Hashmap: Ongeordend, mag geen duplicaten(key) bevatten, Key & Value

Treemap: Geordend, mag geen duplicaten(key) bevatten, Key & Value

Treeset: Geordend, mag geen duplicaten bevatten

Hashset: Ongeordend

Klopt dit een beetje ?

Vooral ook belangrijk om weten is dat de uitvoeringssnelheid van de typische operaties verschilt tussen die datastructuren.
Hier een overzicht: Java standard data structures Big O notation | Simple Notions
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan