kuidas javas parameetrina objekti edasi anda


Vastus 1:

Oletame, et määrate klassi nimega Circle järgmiselt:

avalik klass Ring{ topeltraadius; Ring (topeltraadius) { see.raadius = raadius; } public void draw () { // mõned joonistamisfunktsioonid ringi joonistamiseks }}

Java põhiklassis loote ringi eksemplari:

public staatiline void main (String [] argumendid){ Ring o = uus ring (20.18); // klassi Circle eksemplar // nüüd peate selle objekti enne seda parameetrina edastama peate tegema funktsiooni, mis aktsepteerib tüüpi Circle objekte.}

Tehke funktsiooni tõmbering järgmiselt:

avalik staatiline tühine tõmbering (ringi ring){ ring.joonista ();}

Nüüd saate põhifunktsioonis seda funktsiooni kutsuda kahel viisil:

avalik staatiline void main (){ // ringi objekt o loodi varem veorõngas (o); // VÕIveorõngas (uus ring (20.18)); // teeb täpselt sama asja}

Kui soovite oma koodi korduvalt kasutada, kasutage polümorfismi:

Tehke superklassiline kuju kõigile klassidele, näiteks ring, kolmnurk, Pentagon jne.

avaliku klassi kuju{ avalik loosimine () { // joonistamismeetod }}Nüüd pane Circle Shape'ilt pärimaavaliku klassi ring laiendab kuju{ topeltraadius; Ring (topeltraadiusega) { see.raadius = raadius; } avalik tühine loosimine () { // alistab Shape'i loosimise }}

Nüüd, kui teil on joonistamisklass Joonistamine järgmiselt:

avalik tund Joonistamine{ privaatne Kuju kuju; public void setShape (kuju kuju) { see.kuju = kuju; } public void drawShape () { see.kuju.joonista (); }}

Sel viisil eemaldasime joonistamisfunktsiooni sõltuvuse, et saaksime joonistada ainult ringi objekti. Homme, kui leiutate uue kuju, saab joonistamise klass ka selle joonistada. Oleme kasutanud mõistet, et superklassi viide võib osutada alamklassi objektile.

Kui teil on veel kahtlusi, pange see kommentaaride jaotisesse. Püüan neid selgitada.


Vastus 2:

Mis tahes klassi objekti võime parameetrina edastada java meetodile. Meil on juurdepääs kutsutud meetodi sees edastatud objekti eksemplarimuutujatele. Hea tava on initsialiseerida objekti eksemplarimuutujad enne objekti parameetrina meetodile edastamist, vastasel juhul võtab see vaikimisi algväärtused.

Objekti kui parameetri edastamise erinevad viisid:

1. Meetodile ainult objekti avalike andmete edastamine.

Oletame, et meil on klassi private muutuja, siis ei saa me põhimeetodi väärtust värskendada, kuna tal pole luba sellele juurde pääseda.

privaatne int pikkus;

pärast pikkuse privaatseks muutmist -

————————————————————————————————————-

klass RectangleDemo {

public staatiline void main (String args []) {

Ristkülik r1 = uus ristkülik ();

Ristkülik r2 = uus ristkülik ();

r1.pikkus = 20;

r1.laius = 10;

r2.ala (r1.pikkus, r1.laius);

}

}

——————————————————————————————————————————

2. Eksemplarimuutujate ükshaaval edastamine

—————————————————————————————————————————-

pakett com.pritesh.programs;

klass Ristkülik {

int pikkus;

int laius;

tühine ala (int pikkus, int laius) {

int areaOfRectangle = pikkus * laius;

System.out.println ("Ristküliku ala:"

+ areaOfRectangle);

}

}

klass RectangleDemo {

public staatiline void main (String args []) {

Ristkülik r1 = uus ristkülik ();

Ristkülik r2 = uus ristkülik ();

r1.pikkus = 20;

r1.laius = 10;

r2.ala (r1.pikkus, r1.laius);

}

}

——————————————————————————————————————

Tegelikult pole see viis objekti meetodile edastamiseks. kuid see programm selgitab teile, kuidas konkreetse objekti eksemplarimuutujaid helistamismeetodile edastada.

3. Objekti nime otse edasi andes

tühine ala (ristkülik r1) {

int areaOfRectangle = r1.pikkus * r1.laius;

System.out.println ("Ristküliku ala:"

+ areaOfRectangle);

}

klass RectangleDemo {

public staatiline void main (String args []) {

Ristkülik r1 = uus ristkülik (10, 20);

r1.ala (r1);

}


Vastus 3:

Küsite objektiklassi (java kõige enam klass) või javaobjektide kohta nagu tavalised klassid?

Objektiklasside eeldusel saate selle edastada meetodi argumendina.

Nt

avalik klass Töötaja {

privaatne stringi nimi;

privaatne stringi e-post;

// getter ja setters

}

avalik klass SaveEmployeeDaoImpl {

// Edastan argumendina objekti Employee Class.

public void updateEmloyee (Employee emp) {

}

}

Palun toetage ja jagage meie

http://www.bitaacademy.com


Vastus 4:

Kui edastate objekti meetodile, muutub olukord dramaatiliselt, sest objekte edastab see, mida tegelikult kutsutakse viitena. Pidage meeles, et kui loote klassitüübi muutuja, loote ainult viite objektile. Seega, kui edastate selle viite meetodile, viitab selle saanud parameeter samale objektile, millele argument viitab. See tähendab tegelikult seda, et objektid edastatakse meetoditele viite abil. Meetodi sees oleva objekti muudatused mõjutavad argumendina kasutatavat objekti.


Vastus 5:

Täpselt nagu primitiivsed andmetüübid int, float jne ... pakub Java (ja muud OO-keeled) meile võimalust luua oma andmetüüp (mida peetakse kasutaja määratud andmetüübiks), on klass ja klassi Class objekt. Üldiselt käsitlevad kõik objektile orienteeritud keeled kasutaja määratletud andmetüüpe samamoodi nagu primitiivseid tüüpe. Täpselt nagu primitiivset tüüpi andmeid, saab objekti kasutada ka nimena

  1. Meetodi või konstruktori parameeter
  2. meetodilt naasmine
  3. klassi andmeliige
  4. meetodi kohapeal

Allpool on süntaks selle kohta, kuidas objekti saab meetodi parameetrina kasutada

klassi koordinaat

{

privaatne int x, y;

// lisage x, y jaoks vajalik konstruktor (id), setter ja getters

}

klassi hulknurk

{

privaatne loend koordid;

// lisage x, y jaoks vajalik konstruktor (id), setter ja getters

meetod allpool aktsepteerib parameetrina objekti Koordinaat

void addPoint (koordinaatide koordinaat)

{

coords.add (coord);

}

}


Vastus 6:

/ * Kohandatud klass * /

Klassidemo {

int a;

Demo (int a) {

see.a = a;

}

Demo (Demo demo) {

// kasutage oma nõudena objekti

System.out.println ("klassi konstruktor objekti argumendiga");

}

}

/ * põhiklass * /

Klass mainClass {

public staatiline void main (String args []) {

int a = 1, b = 2;

Demo esimeneDemo = uus demo (a);

Demo secondDemo = uus demo (firstDemo); // Demoklassi objekt

}

}