| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Arv på den "rigtige" måde? Fra : Flare | 
  Dato :  28-01-03 17:07 |  
  |   
            Hejsa jeg har ikke et problem men mere et spørgsmål mht. arv.
 
 Jeg har fx.
 
 public class Ship{
         int x;
         int y;
         Ship (int y, int x){
             this.x = x;
             this.y = y;
         }
 }
 public class BigBoat extends Ship {
     int  weight;
     BigBoat(int x, int y, int w)
     {
         // Her kommer så spørgsmålet. hvordan får jeg inititaliseret
         // Ship på en "rigtige" og gængse måde?
     }
 }
 
 Jeg har selv 2 bud.
 
 BigBoat(int x, int y, int w) {
     weight = w;
     super.x = x;
     super.y = y;
 }
 ELLER
 
 BigBoat(int x, int y, int w) {
     weight = w;
     super(x,y);
 }
 
 Dvs jeg kalder ikke super constructoren i den første måde. Skal jeg det?
 Eller er der en 3 måde at gøre det på?
 
 Håber nogen kan hjælpe
 Anders
 
 
 
 
 
 
 
 
 
 
 
  
            
             |   |   
            
        
 
            
         
           Kenneth Egholm (28-01-2003) 
         
	
            | Kommentar Fra : Kenneth Egholm | 
  Dato :  28-01-03 17:14 |  
  |   
            "Flare" <dct_flare@hotmail.com> wrote in message
 news:3e36aaaa$0$149$edfadb0f@dread14.news.tele.dk...
 > Hejsa jeg har ikke et problem men mere et spørgsmål mht. arv.
 >
 <SNIP kode>
 
 > ELLER
 >
 > BigBoat(int x, int y, int w) {
 >     weight = w;
 >     super(x,y);
 > }
 >
 > Dvs jeg kalder ikke super constructoren i den første måde. Skal jeg
 det?
 > Eller er der en 3 måde at gøre det på?
 
 Den sidste måde (herover) er helt rigtig..
 
 MVH Kenneth Egholm
 
 
  
            
             |   |   
            
        
 
            
         
           Lars Dam (28-01-2003) 
         
	
            | Kommentar Fra : Lars Dam | 
  Dato :  28-01-03 17:23 |  
  |   
            On Tue, 28 Jan 2003 17:07:06 +0100
 "Flare" <dct_flare@hotmail.com> wrote:
 
 > Hejsa jeg har ikke et problem men mere et spørgsmål mht. arv.
 > 
 > 
 > BigBoat(int x, int y, int w) {
 >     weight = w;
 >     super(x,y);
 > }
 > 
 > Dvs jeg kalder ikke super constructoren i den første måde. Skal jeg det?
 > Eller er der en 3 måde at gøre det på?
 
 Gør det på den sidste måde.
 
 1) Det kan jo være at superklassen initialiserer mere end blot de to variabler du har
 2) Du fjerner en binding mellem sub klassen og super klassen (super klassen må nu ikke mere lave om på sin implementation af x og y fordi en sub klasse bruger det på den måde.
  
 > Håber nogen kan hjælpe
 > Anders
 
 vh. ld
  
            
             |   |   
            
        
 
            
         
           Flare (28-01-2003) 
         
	
            | Kommentar Fra : Flare | 
  Dato :  28-01-03 17:28 |  
  |   
            > Gør det på den sidste måde.
 
 Takker til jer begge to for de hurtige svar.
 Synes også det var det mest logiske at gøre. Men for at være helt sikker :)
 
 Anders
 
 
  
            
             |   |   
            
        
 
            
         
            Michael Banzon (28-01-2003) 
         
	
            | Kommentar Fra : Michael Banzon | 
  Dato :  28-01-03 17:35 |  
  |  
 
            "Flare" <dct_flare@hotmail.com> skrev i en meddelelse
 news:3e36af96$0$224$edfadb0f@dread14.news.tele.dk...
 > > Gør det på den sidste måde.
 >
 > Takker til jer begge to for de hurtige svar.
 > Synes også det var det mest logiske at gøre. Men for at være helt sikker
 :)
 >
 > Anders
 >
 >
 Det kommer IKKE til at virke! Du skal kalde "super(...)" først, altså før
 end at du laver noget andet...   
/ Michael
            
              |   |   
            
        
 
            
         
           Anders K. Olsen (28-01-2003) 
         
	
            | Kommentar Fra : Anders K. Olsen | 
  Dato :  28-01-03 19:36 |  
  |   
            "Lars Dam" <larsdam___YeahNoUnderscores_____@______post2.tele.dk> skrev i en
 meddelelse
 news:20030128172234.6e5506b1.larsdam___YeahNoUnderscores_____@______post2.te
 le.dk...
 > On Tue, 28 Jan 2003 17:07:06 +0100
 > "Flare" <dct_flare@hotmail.com> wrote:
 >
 > > Hejsa jeg har ikke et problem men mere et spørgsmål mht. arv.
 > >
 > >
 > > BigBoat(int x, int y, int w) {
 > >     weight = w;
 > >     super(x,y);
 > > }
 > >
 > > Dvs jeg kalder ikke super constructoren i den første måde. Skal jeg det?
 > > Eller er der en 3 måde at gøre det på?
 >
 > Gør det på den sidste måde.
 >
 > 1) Det kan jo være at superklassen initialiserer mere end blot de to
 variabler du har
 > 2) Du fjerner en binding mellem sub klassen og super klassen (super
 klassen må nu ikke mere lave om på sin implementation af x og y fordi en sub
 klasse bruger det på den måde.
 
 Og et tredje punkt:
 
 3) Der skal ALTID kaldes en constructor på et objekt og det objekt det evt.
 arver fra, når der skabes en instans. Hvis klassen har en constructor der
 ikke tager argumenter (eller hvis den slet ikke har en constructor - default
 constructor) kaldes denne automatisk. Ellers skal du kalde superklassens
 constructor selv. Som Michael også skriver, så skal super(...) kaldes som
 det første i subklassens constructor.
 
 Dvs. hvis Ship kun har den ene constructor der tager to int argumenter, skal
 den kaldes i enhver subklasses constructor.
 
 /Anders
 
 
  
            
             |   |   
            
        
 
            
         
            Flare (29-01-2003) 
         
	
            | Kommentar Fra : Flare | 
  Dato :  29-01-03 13:43 |  
  |   
            > Dvs. hvis Ship kun har den ene constructor der tager to int argumenter,
 skal
 > den kaldes i enhver subklasses constructor.
 
 OK. :)
 
 Anders
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |