קאָמפּיוטערספּראָגראַממינג

ז'אבא גענעריקס: באַשרייַבונג און מעטהאָדס

סטאַרטינג מיט די אויסזען פון די ז'אבא שפּראַך האט אַנדערגאָן אַ פּלאַץ פון ענדערונגען, וואָס בלי געבראכט positive מאָומאַנץ אין זייַן פונקטיאָנאַליטי. איינער פון די באַטייַטיק ענדערונגען איז די הקדמה פון ז'אבא גענעריק אָדער גענעראַליזאַטיאָנס. דעם פונקטיאָנאַליטי ניט בלויז מאַכן די שפּראַך מער Flexible און ווערסאַטאַל, אָבער אויך פיל סאַפער אין טערמינען פון ברענגען די דאַטע טייפּס.

די פאַקט איז אַז פריערדיק צו די הקדמה פון דזשאַנעריקס אין ז'אבא דזשאַנעריק קאָד קען זיין געשאַפֿן געוואָרן, ניט נאָר אין טערמינען פון טיפּ דערמאָנען אָבדזשעקט. אַזאַ לינקס קענען זיין אַסיינד קיין כייפעץ. נאָך אַלע, קלאסן אין ז'אבא זענען ימפּליסאַט אָבדזשעקט קלאַס יורשים. אָבער, דעם צוגאַנג איז אַ פּאָטענציעל מקור פון פילע ערראָרס שייך צו זיכערהייַט טייפּס אין די קלאָר קאַנווערזשאַן פון אַ כייפעץ פון די אָבדזשעקט צו דעם ציל טיפּ. ווען ניצן גענעראַליזאַטיאָנס אַלע קאַסץ זענען געטאן ימפּליסאַטלי און אויטאָמאַטיש, ילימאַנייטינג אַפֿילו דער פּאָטענציעל פֿאַר ערראָרס.

ז'אבא גענעריקס: באַשרייַבונג און לעמאָשל

זאל אונדז באַטראַכטן אַ פּשוט בייַשפּיל פון די אַפּלאַקיישאַן פון גענעראַליזאַטיאָן צו רעגולער קלאסן אין די פיגור אונטן. און דעמאָלט גיינ ווייַטער צו אַ דיטיילד דורכקוק פון אַלע די סאַטאַלטיז און נואַנסיז פון ז'אבא גענעריק.

צוקוקנ זיך צו די וועג אין וואָס די סאָרט דעקלאַראַציע אַקערז פּאָר. גלייך נאָך די סאָרט נאָמען, עפענען ווינקל בראַקאַץ, וואָס אנגעוויזן די בריוו טי עס איז אַ מין פון פיללער, וואָס איז אין דעם פּראָצעס פון קריייטינג אַן בייַשפּיל פון דעם קלאַס וועט זיין ריפּלייסט דורך אַ ספּעציפיש טיפּ. עס קוקט ווי גייט: פּאָר <ינטעגער> אָבדזש = נייַ פּאָר <ינטעגער> (). עס זאָל זיין אנגעוויזן אַז אַנשטאָט פון ה קענען ספּעציפיצירן קיין בריוו, אָבער, ווי אַ הערשן, נוצן ה, וו אָדער י

באַמערקונג: סטאַרטינג מיט די אַכט ווערסיע פון די ז'אבא, ספּעסיפיינג די ציל טיפּ ווען דיקלערינג דערמאָנען ווינקל בראַקאַץ אין די קאַנסטראַקטער קענען זיין לינקס ליידיק. אַזוי למשל קענען זיין ריריטאַן ווי אויבן: פּאָר <ינטעגער> אָבדזש = נייַ פּאָר <> ().

ווען אַ קלאַס איז דערקלערט אין אַזאַ אַ וועג, דעמאָלט אין זיין גוף אַנשטאָט פון ספּעציפיש טייפּס פון fields, לינקס, אַבדזשעקס אומגעקערט דורך די מעטהאָדס איר קענען נוצן אַז בריוו. זינט ה ווען קריייטינג די קלאַס כייפעץ איז ריפּלייסט דורך אַ באַזונדער טיפּ, ערשטער און רגע fields אין דעם פאַל וועט זיין פון דעם טיפּ ינטעגער.

ווייַטערדיק די לאָגיק פון די טענות און פירסטיטעם סעקאָנדיטעם, רעפעררעד צו די צונעמען קאַנסטראַקטער מוזן אויך זיין פון טיפּ ינטעגער אָדער סובקלאַסס. אויב איר פּרווון צו יבערשיקן אַ דאַטן טיפּ אַז איז אַנדערש פון וואָס איז געווען ספּעסיפיעד ווען קריייטינג אַן כייפעץ, די קאַמפּיילער וועט ניט לאָזן דעם גרייַז. אזוי, די טענות קאַנסטראַקטער ווען אַ כייפעץ וועט זיין ווי גייט: פּאָר <ינטעגער> אָבדזש = נייַ פּאָר <> (נייַ ינטעגער (1), נייַ ינטעגער (2)). דער זעלביקער אַפּלייז צו די טענות און מעטהאָדס סעטפירסט סעצעקאָנד. און ווי איר 'ווע מיסטאָמע געסט, מעטהאָדס געטפירסט געצעקאָנד און וועט צוריקקומען אַ ווערט פון טיפּ ינטעגער.

דזשענראַלייזד מיט עטלעכע פּאַראַמעטערס קלאַס טייפּס

אין דזשענראַלייזד קלאסן קענען אויך דערקלערן קייפל פּאַראַמעטערס פון די טיפּ אַז ביסט שטעלן אין ווינקל בראַקאַץ מיט אַ קאָמע. רעדעסיגנעד דורך אַ פאַל פּאָר קלאַס איז דערלאנגט אונטן.

ווי איר קענען זען, ווען איר מאַכן אַ בייַשפּיל פון דעם סאָרט אין ווינקל בראַקאַץ זאָל אָנווייַזן די זעלבע נומער פון טייפּס ווי פּאַראַמעטערס. אויב איר זענט באַקאַנט מיט דעם טיפּ פון דאַטן סטרוקטור ווי אַ מאַפּע, איר קענען זען אַז עס ניצט פּונקט די זעלבע פּרינציפּ. עס, דער ערשטער אַרגומענט ספּעסיפיעס די טיפּ פון שליסל, און די צווייט - די טיפּ פון ווערט. עס זאָל זיין אנגעוויזן אַז די טייפּס פון טראַנסמיטטעד ווען אַ כייפעץ טענות קען אָוווערלאַפּ. למשל, דער ווייַטערדיק אַד פּאָר קלאַס בייַשפּיל איז לעגאַמרע ריכטיק: פּאָר <שטריקל, סטרינג> אָבדזש.

עטלעכע פֿעיִקייטן פון גענעראַליזאַטיאָנס

איידער געגאנגען ווייַטער, עס זאָל זיין אנגעוויזן אַז די ז'אבא קאַמפּיילער טוט נישט מאַכן פאַרשידענע ווערסיעס פון די סאָרט פּאָר. אין פאַקט, אין דעם פּראָצעס פון קאַמפּיילינג אַ דזשענראַלייזד טיפּ אַלע די אינפֿאָרמאַציע איז אויסגעמעקט. אָנשטאָט, איר ברענגען די צונעמען טייפּס, קריייטינג אַ ספּעציעל ווערסיע פון די פּאָר קלאַס. אָבער, אין דער פּראָגראַם עס איז נאָך נאָר אַ דזשאַנעריק ווערסיע פון דער קלאַס. דעם פּראָצעס איז גערופֿן אין ז'אבא גענעריק רייניקונג טיפּ.

באַמערקונג אַ וויכטיק פונט. לינקס צו פאַרשידענע ווערסיעס פון דער זעלביקער ז'אבא דזשאַנעריק קלאַס קענען ניט פונט צו איין און די זעלבע כייפעץ. אַז איז, רעכן מיר האָבן צוויי לינקס: פּאָר <ינטעגער> אָבדזש1 און פּאָר <דאָובלע> אָבדזש2. דעריבער, אין שורה אָבדזש1 = אָבדזש2 אַ טעות. כאָטש ביידע וועריאַבאַלז זענען פון טיפּ פּאָר <ה>, די אַבדזשעקס צו וואָס זיי אָפּשיקן, זענען אַנדערש. דאס איז אַ הויפּט בייַשפּיל פון די טייפּס פון זיכערהייַט אין ז'אבא גענעריק.

ריסטריקשאַנז אויף דזשאַנעריק קלאסן

עס איז וויכטיק צו וויסן אַז גענעראַליזאַטיאָנס קענען זיין געווענדט בלויז צו דערמאָנען טייפּס, אַז איז צו פאָרן פּאַראַמעטערס דזשאַנעריק קלאַס ז'אבא אַרגומענט מוזן זיין אַ סאָרט טיפּ. די פּשוט טייפּס, אַזאַ ווי, למשל, טאָפּל אָדער לאַנג, קענען ניט זיין טראַנספעררעד. אין אנדערע ווערטער, די ווייַטערדיק שורה פּאָר קלאַס דעקלאַראַציע איז נישט ערלויבט: פּאָר <ינט> אָבדזש. אָבער, דעם באַגרענעצונג איז ניט אַ ערנסט פּראָבלעם, ווי עס איז אַ קאָראַספּאַנדינג ז'אבא ראַפּער קלאַס פֿאַר יעדער פּרימיטיוו טיפּ. שטרענג גערעדט, אויב די סאָרט פּאָר איר ווילן צו ענקאַפּסאַלייט אַ ינטאַדזשער און באָאָלעאַן ווערט אַווטאָופּאַקאָווקאַ טוט אַלץ פֿאַר איר: פּאָר <ינטעגער, באָאָלעאַן> אָבדזש = נייַ פּאָר <> (25, אמת).

אן אנדער ערנסט באַגרענעצונג איז די ינאַביליטי צו שאַפֿן אַ בייַשפּיל פון די פּאַראַמעטער טיפּ. למשל, דער ווייַטערדיק שורה וועט אָנמאַכן אַ זאַמלונג טעות: ה ערשטער = נייַ ה (). דאס איז קלאָר ווי דער טאָג, ווייַל איר טאָן ניט וויסן אין שטייַגן צי אַן אַרגומענט דורכגעגאנגען אַ פול קלאַס אָדער אַבסטראַקט, אָדער אַפֿילו צובינד. דער זעלביקער גייט פֿאַר קריייטינג ערייז.

באגרענעצט טייפּס

גאַנץ אָפֿט עס זענען סיטואַטיאָנס ווען עס איז נייטיק צו שיעור די רשימה פון טייפּס אַז קענען זיין דורכגעגאנגען ווי אַן אַרגומענט צו ז'אבא דזשאַנעריק קלאַס. זאל אונדז יבערנעמען אַז אין אונדזער קלאַס פּאָר מיר ווילן צו ענקאַפּסאַלייט בלויז די נומעריקאַל וואַלועס פֿאַר ווייַטער מאַטאַמאַטיקאַל אַפּעריישאַנז אויף זיי. צו טאָן דאָס מיר דאַרפֿן צו דעפֿינירן דער אויבערשטער שיעור פון די פּאַראַמעטער טיפּ. עס איז איינגעזען דורך מיטל פון אַ סופּערקלאַסס אַדס ינכעראַטיד אַלע די טענות דורכגעגאנגען אין ווינקל בראַקאַץ. עס וועט קוקן ווי גייט: קלאַס פּאָר <ה יקסטענדז נומער>. אין דעם שטייגער, די קאַמפּיילער פינדס אַז אָנשטאָט פון דעם פּאַראַמעטער ה קענען זיין סאַבסטאַטוטאַד אָדער נומער קלאַס אָדער איינער פון זייַן סובקלאַססעס.

דעם איז אַ פּראָסט אָפּטראָג. אַזאַ ריסטריקשאַנז זענען אָפֿט געניצט צו צושטעלן קאַמפּאַטאַבילאַטי טיפּ פּאַראַמעטערס אין איין און די זעלבע סאָרט. באַטראַכטן די משל אין אונדזער קלאַס פּאָר: קלאַס פּאָר <ה, וו יקסטענדז ה>. דאָ מיר זאָגן די קאַמפּיילער אַז דעם טיפּ ה קענען זיין אַרבאַטרערי, און וו טיפּ מוזן זיין אָדער ה טיפּ אָדער איינער פון זייַן סובקלאַססעס.

לימיטינג די "דנאָ" איז פּונקט דער זעלביקער וועג, אָבער אַנשטאָט פון די וואָרט יקסטענדז צו רעגע די וואָרט סופּער. אַז איז קלאַססיפיעד קלאַס פּאָר <ה סופּער אַררייַליסט> זאגט אַז אַנשטאָט פון ה זאל זיין סאַבסטאַטוטאַד אָדער אַ אַררייַליסט, אָדער קיין סאָרט אָדער צובינד אַז עס ינכעראַץ.

גענעריק ז'אבא מעטהאָדס און קאָנסטרוקטאָרס

אין ז'אבא, גענעראַליזאַטיאָנס קענען זיין געווענדט ניט נאָר צו די קלאסן, אָבער אויך מעטהאָדס. לעמאָשל, אַ דזשאַנעריק אופֿן קענען זיין דערקלערט אין אַ רעגולער קלאַסצימער.

ווי געזען אין די פיגור אויבן, דעם אַד דזשענראַלייזד אופֿן איז ניט גרויס האַנדלען. גענוג איידער די צוריקקומען טיפּ פון אַ אופֿן צו שטעלן די ווינקל בראַקאַץ און ספּעציפיצירן די טיפּ פּאַראַמעטערס אין זיי.

אויב אַלץ איז געטאן סימאַלערלי צו די קאַנסטראַקטער:

ווינקל בראַקאַץ אין דעם פאַל שטעלן איידער די נאָמען פון די דיזיינער, ווייַל ער האט ניט קיין צוריקקומען ווערט. דער רעזולטאַט פון ביידע מגילה וועט זיין:

ינטעגער

שטריקל

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 yi.delachieve.com. Theme powered by WordPress.