מחלקות ואובייקטים של Java

1. סקירה כללית

במדריך מהיר זה, נבחן שני אבני בניין בסיסיות של שפת התכנות ג'אווה - שיעורים ואובייקטים. הם מושגים בסיסיים בתכנות מונחה עצמים (OOP), בהם אנו משתמשים כדי לדגמן ישויות מהחיים האמיתיים.

ב- OOP, שיעורים הם שרטוטים או תבניות לאובייקטים. אנו משתמשים בהם לתיאור סוגי ישויות.

מצד שני, אובייקטים הם ישויות חיות, שנוצרו ממעמדות. הם מכילים מצבים מסוימים בתחומם ומציגים התנהגויות מסוימות בשיטותיהם.

2. שיעורים

במילים פשוטות, מחלקה מייצגת הגדרה או סוג של אובייקט. ב- Java שיעורים יכולים להכיל שדות, בונים ושיטות.

בואו נראה דוגמה באמצעות מחלקת Java פשוטה המייצגת a אוטו:

מחלקה מכונית {// שדות סוג מחרוזת; מודל מיתרים; צבע מחרוזת; מהירות int; // מכונית קונסטרוקטור (סוג מחרוזת, מודל מחרוזת, צבע מחרוזת) {this.type = type; this.model = מודל; this.color = צבע; } // שיטות int increaseSpeed ​​(int increment) {this.speed = this.speed + תוספת; להחזיר את זה.מהירות; } // ...} 

מחלקת Java זו מייצגת מכונית באופן כללי. אנחנו יכולים ליצור כל סוג של מכונית מהמחלקה הזו. אנו משתמשים בשדות כדי להחזיק את המדינה ובונה ליצירת אובייקטים מהמחלקה הזו.

לכל מחלקת Java יש קונסטרוקטור ריק כברירת מחדל. אנו משתמשים בו אם איננו מספקים יישום ספציפי כפי שעשינו לעיל. הנה איך בנאי ברירת המחדל יחפש את שלנו אוטו מעמד:

אוטו(){} 

קונסטרוקטור זה פשוט מאותחל את כל שדות האובייקט עם ערכי ברירת המחדל שלהם. מיתרים מאותחל ל ריק ומספרים שלמים לאפס.

כעת, בכיתה שלנו יש בנאי ספציפי מכיוון שאנחנו רוצים שהאובייקטים שלנו יגדירו את השדות שלהם כשאנחנו יוצרים אותם:

מכונית (סוג מחרוזת, דגם מחרוזת) {// ...} 

לסיכום, כתבנו שיעור המגדיר מכונית. מאפייניו מתוארים על ידי שדות, המכילים את מצב האובייקטים של הכיתה, והתנהגותו מתוארת בשיטות.

3. חפצים

בעוד שיעורים מתורגמים בזמן הידור, אובייקטים נוצרים משיעורים בזמן ריצה.

אובייקטים של כיתה נקראים מופעים, ואנחנו יוצרים ומאתחלים אותם עם בונים:

פוקוס רכב = מכונית חדשה ("פורד", "פוקוס", "אדום"); רכב אוריס = רכב חדש ("טויוטה", "אוריס", "כחול"); גולף לרכב = רכב חדש ("פולקסווגן", "גולף", "ירוק"); 

עכשיו, יצרנו שונה אוטו אובייקטים, כולם ממעמד יחיד. זו הנקודה של כל זה, להגדיר את התוכנית במקום אחד, ואז, לעשות בה שימוש חוזר פעמים רבות במקומות רבים.

עד כה יש לנו שלוש אוטו חפצים, וכולם חונים מכיוון שמהירותם היא אפס. אנו יכולים לשנות זאת על ידי הפעלת שלנו להגביר מהירות שיטה:

focus.increaseSpeed ​​(10); auris.increaseSpeed ​​(20); golf.increaseSpeed ​​(30); 

עכשיו שינינו את מצב המכוניות שלנו - כולם נעים במהירות שונה.

יתר על כן, אנו יכולים וצריכים להגדיר בקרת גישה למחלקה שלנו, הבונים שלה, שדותיה ושיטותיה. אנו יכולים לעשות זאת על ידי שימוש במכיני גישה, כפי שנראה בסעיף הבא.

4. משני גישה

בדוגמאות הקודמות, השמטנו מגדלי גישה כדי לפשט את הקוד. בכך למעשה השתמשנו בשינוי ברירת מחדל לחבילה פרטית. שינוי זה מאפשר גישה למחלקה מכל מחלקה אחרת באותה חבילה.

בדרך כלל נשתמש ב- פּוּמְבֵּי משנה לבנאים כדי לאפשר גישה מכל האובייקטים האחרים:

רכב ציבורי (סוג מחרוזת, דגם מחרוזת, צבע מחרוזת) {// ...} 

כל שדה ושיטה בכיתה שלנו היו צריכים להגדיר גם בקרת גישה על ידי שינוי ספציפי. בשיעורים יש בדרך כלל פּוּמְבֵּי משנים, אך אנו נוטים לשמור על שדותינו פְּרָטִי.

שדות מחזיקים את מצב האובייקט שלנו, ולכן אנו רוצים לשלוט בגישה למצב זה. אנחנו יכולים לשמור על כמה מהם פְּרָטִי, ואחרים פּוּמְבֵּי. אנו משיגים זאת בשיטות ספציפיות הנקראות גטרס וקובעים.

בואו נסתכל על הכיתה שלנו עם בקרת גישה מוגדרת לחלוטין:

רכב בכיתה ציבורית {סוג מחרוזת פרטי; // ... מכונית ציבורית (סוג מחרוזת, דגם מחרוזת, צבע מחרוזת) {// ...} מחרוזת ציבורית getColor () {צבע להחזיר; } חלל ציבורי setColor (צבע מחרוזת) {this.color = color; } public int getSpeed ​​() {מהירות החזרה; } // ...} 

הכיתה שלנו מסומנת פּוּמְבֵּי, כלומר אנו יכולים להשתמש בו בכל חבילה. כמו כן, הקונסטרוקטור הוא פּוּמְבֵּי, כלומר אנו יכולים ליצור אובייקט מהמחלקה הזו בתוך כל אובייקט אחר.

השדות שלנו מסומנים פְּרָטִימה שאומר שהם לא נגישים מהאובייקט שלנו ישירות, אך אנו מספקים גישה אליהם באמצעות מבוגרים וקובעים.

ה סוּג ו דֶגֶם אין שדות וקובעים כי הם מחזיקים נתונים פנימיים של האובייקטים שלנו. אנו יכולים להגדיר אותם רק באמצעות הבנאי במהלך האתחול.

יתר על כן, ה צֶבַע ניתן לגשת ולשנות, ואילו מְהִירוּת ניתן לגשת אך ורק לשינוי. אנו אוכפים התאמות מהירות באמצעות מתמחים פּוּמְבֵּי שיטות להגביר מהירות() ו ירידה מהירות ().

במילים אחרות, אנו משתמשים בבקרת גישה בכדי לתמצת את מצב האובייקט.

5. מסקנה

במאמר זה עברנו על שני אלמנטים בסיסיים של שפת Java, מחלקות ואובייקטים והראינו כיצד ומדוע משתמשים בהם. הצגנו גם את יסודות בקרת הגישה והדגמנו את השימוש בה.

כדי ללמוד מושגים אחרים של שפת ג'אווה, אנו מציעים לקרוא על ירושה, מילת המפתח העל ושיעורים מופשטים כשלב הבא.

קוד המקור השלם לדוגמא זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found