src ([info]src) rakstīja [info]koderi kopienā,
@ 2005-04-20 12:30:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
java newbie jautājums
Kā (un vai vispār var) no superklases metodes tikt klāt pie child klases atribūta vērtības?

Upd: Paldies par izglītošanu, problēmu esmu apgājis citādāk.


(Ierakstīt jaunu komentāru)


[info]markizs
2005-04-20 12:37 (saite)
nokastot objektu uz child klasi un tad izsaukt attieciigo get metodi

(Atbildēt uz šo) (Diskusija)


[info]src
2005-04-20 12:43 (saite)
Situācija tāda:

  • superklasei ir atribūts x ar vērtību 0

  • childklasei atribūta x vērtība ir 1

  • superklasei ir metode, ko izsauc child klase, tā izmanto atribūta vērtību, metode kā atribūta x vērtību dabū 0



Es mazliet tā kā šokā biju.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2005-04-20 12:46 (saite)
hmm un ko tu domā ar vārdu atribūts? static int?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 12:53 (saite)
 package test;
 public abstract class Parent {
     public int testvar=1;
     public void showTestVar()
     {
         System.out.print("testvar: " + this.testvar);
     }
 public  class Child extends Parent {
     public  int testvar =  51;
 }
 class Run {
     public static void main(String[] args) {
         Child ik = new Child();
         ik.showTestVar();
     }
 }


rezultāts ir "testvar: 1"

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2005-04-20 12:57 (saite)
hmm. nez. a kas ir ja to mainiigo nepaardefinee, bet taas veertiibas seto parenta un childa konstruktoraa?
man nav java uzinstaleeta uz sitiena eh

(Atbildēt uz šo) (Iepriekšējais)


[info]markizs
2005-04-20 13:17 (saite)
tur obligaati to this vajag btw?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:19 (saite)
ar/bez nav atšķirības

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2005-04-20 13:24 (saite)
taa kaa klase ir abstrakta, znachit taas klases objektu nekad nebuus, mosh tad vari rakstiit teiksim ((Child)this).testvar? hacky jau liidz nemanjai

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:26 (saite)
tikai child klases ir n x desmit dažādas, līdz ar to neder..

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2005-04-20 13:27 (saite)
atliek tikai reflects tad. bet nu stulbi tas ir.
btw a ko atgriezh ja tu parentaa mainiigajam vispaar nepieskir veertiibu?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:38 (saite)
inta defaultā vērtība ir 0

(Atbildēt uz šo) (Iepriekšējais)


[info]markizs
2005-04-20 13:25 (saite)
btw, panjem tajaa get metodee un izdrukaa this.toString(), tipa kas tas par objektu ir. vai arii ar reflectingu paskaties kaada tipa klase ir. interesanti.

(Atbildēt uz šo) (Iepriekšējais)


[info]314
2005-04-20 13:44 (saite)
Atribūtus nevar pārlādēt, dōōh!

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:50 (saite)
javā acīmredzot nē, skat title: 'java newbie'

(Atbildēt uz šo) (Iepriekšējais)


[info]314
2005-04-20 13:48 (saite)
public abstract class Parent {
public int testvar = 1;
public void showTestVar() {
System.out.print("testvar: " + this.testvar);
}
}

public class Child extends Parent {
Child() {
testvar = 51;
}
}

class Run {
public static void main(String[] args) {
Child ik = new Child();
ik.showTestVar();
}
}

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:50 (saite)
kā jau markizam atbildēju - šitā saprotams viss rulez, tik tā nelaime, ka child klases ģenerē izstrādes rīks.

(Atbildēt uz šo) (Iepriekšējais)


[info]misame
2005-05-25 11:23 (saite)
ja godīgi, pats piemērs no OO viedokļa jau izskatās biku līks:
par cik lauks "testvar" jau ir deklarēts bāzes klasē, tad kāda X-a pēc tev to vēlreiz aprakstīt mantojošajā klasē? Atliek TAČU tikai child klases konstruktorā piešķirt viņam vētību.
Tipa
public  class Child extends Parent {
   //nezinu, vai Javā šādi raksta konstruktoru, bet nu 
   //to es biju domājis
    public Child(){ 
      this.testvar=51;
    }
}

Attiecīgi Child konstruktora sākumā vispirms tiks pasaukts bāzes klases konstruktors, kurš testvar uzstādīs uz 1, bet pēc tam izpildīsies Child konstruktors, kurš viņu pārliks uz 51. Vismaz tā būtu VB.Net-ā :)))

(Atbildēt uz šo) (Iepriekšējais)


[info]src
2005-04-20 13:04 (saite)
izskatās, ka ģenerētajām child klasēm nāksies klāt arī ģenerēt get metodi :( citādi nekādi.

(Atbildēt uz šo) (Diskusija)


[info]markizs
2005-04-20 13:10 (saite)
enivei nesaprotu kapeec tev tas mainiigais ir jaadefinee veelreiz child klasee, tieshaam nevar nodefineet vinreiz, bez veertiibas un tad konstruktoros pieskirt vertiibu? mosh tad tev ies kaa vajag? (varbuut tikai protams :P)

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:14 (saite)
Ir tāda neliela nelaime, ka child klases (un atribūtus, komplektā ar vērtībām) ģenerē frameworks/izstrādes rīks.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2005-04-20 13:16 (saite)
un tipa ja childam nodefinee get metodi ar taadu pashu vaardu kaa parentam, tad viss aiziet?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]src
2005-04-20 13:21 (saite)
mmh, tik defaultā get metodes šiem atribūtiem nav ne parentam, ne childam. bišku darbs ndesmit klasēm salikt get metodes klāt, bet galvenais jau, ka tas ir samērā stulbs copy+paste kods.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]grrr
2005-04-20 21:49 (saite)
A aksesot atribūtus pa tiešo no faktiski citas klases nesanāk stulbs kods? Kas mums ar enkapsulāciju? (Sorry - varbūt vienkārši neiebraucu, maz gulējis esmu :)

(Atbildēt uz šo) (Iepriekšējais)


Neesi iežurnalējies. Iežurnalēties?