Nóta
Aðgangur að þessari síðu krefst heimildar. Þú getur prófað aðskrá þig inn eða breyta skráasöfnum.
Aðgangur að þessari síðu krefst heimildar. Þú getur prófað að breyta skráasöfnum.
Athugið
Hagsmunahópar samfélagsins hafa nú færst frá Yammer yfir í Microsoft Viva Engage. Til að ganga í Viva Engage samfélag og taka þátt í nýjustu umræðum skaltu fylla út eyðublaðið Biðja um aðgang að Finance and Operations Viva Engage Community og velja samfélagið sem þú vilt ganga í.
Þessi grein lýsir erfðum í X++, þar á meðal hvernig á að búa til undirflokk og hnekkja aðferð.
Að búa til undirflokk
Undirflokkar eru flokkar sem ná til eða erfa frá öðrum flokkum. Bekkur getur aðeins lengt einn annan flokk. Margfaldur erfður er ekki studdur. Ef þú stækkar flokk erfir undirflokkurinn allar aðferðir og breytur í yfirflokknum ( ofurflokknum). Undirflokkar gera þér kleift að endurnýta núverandi kóða í sértækari tilgangi. Þess vegna hjálpa þeir þér að spara þér tíma við hönnun, þróun og prófun. Til að sérsníða hegðun ofurflokks skaltu hnekkja aðferðunum í undirflokki. Ofurflokkur er oft þekktur sem grunnflokkur og undirflokkur er oft þekktur sem afleiddur flokkur.
Dæmi um undirflokk
Eftirfarandi dæmi stofnar fyrst klasa sem heitir Punktur. Það stækkar síðan Point flokkinn til að búa til nýjan flokk sem heitir ThreePoint.
class Point
{
// Instance fields.
real x;
real y;
// Constructor to initialize fields x and y.
void new(real _x, real _y)
{
x = _x;
y = _y;
}
}
class ThreePoint extends Point
{
// Additional instance fields z. Fields x and y are inherited.
real z;
// Constructor is overridden to initialize z.
void new(real _x, real _y, real _z)
{
// Initialize the fields.
super(_x, _y);
z = _z;
}
}
Að koma í veg fyrir stéttarerf
Þú getur komið í veg fyrir að flokkar erfist með því að nota lokabreytinguna.
public final class Attribute
{
int objectField;
}
Hnekkja aðferð
Aðferðirnar í flokki erfast af hvaða flokki sem stækkar flokkinn. Til að breyta virkni arfgengrar aðferðar er aðferð stofnuð í undirflokknum og síðan er sú aðferð gefin sama heiti og færibreytur og aðferðin í ofurflokknum. Þetta ferli er þekkt sem að hnekkja aðferðinni.
Þegar þú setur undirflokkinn saman geturðu úthlutað tilvísuninni annað hvort á breytu af gerð ofurflokks eða gerð undirflokka. Burtséð frá tegund breytunnar er hnekkt aðferðinni kallað.
Í eftirfarandi kóðadæmi hnekkir undirklasinn skrifaðferðinni . Tvær breytur, báðar af gerðinni Punktur eru búnar til. Öðrum er úthlutað punkthlut , hinum er úthlutað ThreePoint hlut. Þegar skrifaðferðin er kölluð á ThreePoint hlutinn er ThreePoint útgáfa aðferðarinnar kölluð.
class Point
{
// Instance fields.
real x;
real y;
// Constructor to initialize fields x and y.
void new(real _x, real _y)
{
x = _x;
y = _y;
}
void write()
{
info("(" + any2Str(x) + ", " + any2Str(y) + ")");
}
}
class ThreePoint extends Point
{
// Additional instance fields z. Fields x and y are inherited.
real z;
// Constructor is overridden to initialize z.
void new(real _x, real _y, real _z)
{
// Initialize the fields.
super(_x, _y);
z = _z;
}
void write()
{
info("(" + any2Str(x) + ", " + any2Str(y) + ", " + any2Str(z) + ")");
}
}
// Code that creates Point objects and calls the write method.
Point point2 = new Point(1.0, 2.0);
Point point3 = new ThreePoint(3.0, 4.0, 5.0);
point2.write();
// Output is "(1.0, 2.0)".
point3.write();
// Output is "(3.0, 4.0, 5.0)".
Að koma í veg fyrir hnekkingu aðferða
Ekki er hægt að hnekkja kyrrstæðum aðferðum, vegna þess að þær eru til fyrir hvern flokk. Til að vernda aðrar viðkvæmar aðferðir, eða kjarnaaðferðir, frá því að vera hnekkt, notaðu lokabreytinguna . Í eftirfarandi dæmi, vegna þess að methodAtt er lýst yfir sem endanlegt, er ekki hægt að hnekkja því í neinum flokki sem framlengir eigind. Þú ættir ekki að tilgreina nýjar eða lokaaðferðir sem endanlegar.
Eftirfarandi dæmi sýnir hvernig á að nota lokaleitarorðið.
public class Attribute
{
int objectVariable;
final void methodAtt()
{
//Some statements
}
}
Hnekkja vs. ofhleðsla
Hnekking á sér stað þegar útfærsla ofurflokksins á aðferð er breytt með útfærslu undirflokksins á þeirri aðferð, en undirskriftir beggja aðferða eru þær sömu.
Aftur á móti á ofhleðsla sér stað þegar fleiri en ein aðferð ber sama nafn, en aðferðirnar hafa mismunandi undirskriftir (skilagerðir, færibreytulistar eða bæði). X++ styður hnekkingu, en það styður ekki ofhleðslu.