שפת Java – הפעם נלמד encapsulation.
בעזרת Encapsulation ניתן להגן על איברים של המחלקה.
כפי שניתן לראות בדוגמה הזאת, יש גישה לאיברים של המחלקה
רק דרך הפונקציות.
public class TestClass { private String x; private String y; private int z; public int getX() { return x; } public String getY() { return y; } public String getZ() { return z; } public void setZ( int z) { this.z = z; } public void setX(String x) { this.x = x; } public void setY( String y) { this.y = y; } }
הסבר:
בעזרת מילה שמורה private אנחנו מגבילים גישה למחלקות יורשות לפרמטרים:
x,y,z
public class TestClass { private String x; private String y; private int z; }
עם זאת נותנים גישה לפרמטרים האלו תוך שימוש בפונקציות.
כי לפונקציות שלנו יש גישה מסוג public – פתוחות למחלקות יורשות (לאומת private אשר לא פתוחות למחלקות יורשות).
לדוגמה:
* מטודה setX מקבלת פרמטר X מסוג STRING ומאתחלת X של המחלקה בעזרת this.x
* מטודה getX מחזריה את X של המחלקה
public class TestClass { private String x; private String y; private int z; public void setX(String x) { this.x = x; } public int getX() { return x; } }
דוגמה:
public class MainTestClass{ public static void main(String args[]) { TestClass obj = new TestClass(); obj.setX("Xtest"); obj.setZ(12); obj.setY("Ytest"); System.out.print("X: " + obj.getX() + " Z: " + obj.getZ()); } }
בצבע כחול מוגדר אובייקט בשם obj מבוסס על המחלקה TestClass
בצבע ירוק בעזרת פונקציה setX מאתחלים X בערך "Xtest"
כזכור:
public class TestClass { private String x; public void setX(String x) { this.x = x; } }
כנ"ל בעזרת פונקציה setZ מאתחלים Z בערך 12
public class TestClass { private int z; public void setZ( int z) { this.z = z; } }
ובעזרת פונקציה setY מאתחלים Y בערך "Ytest" מסוג STRING
public class TestClass { private String y; public void setY( String y) { this.y = y; } }
בסוף מדפיסים
System.out.print("X: " + obj.getX() + " Z: " + obj.getZ());
כאשר פונקציה obj.getX מחזריה ערך X שזה "Xtest"
ופונקציה obj.getZ מחזריה ערך Z שזה 12
דרך אגב אם היינו מנסים לגשת ישירות לפרמטרים האלו (X, Z) כגון
System.out.print("X: " + obj.x + " Z: " + obj.z);
אז היינו מקבלים שגיאת גישה כי לפרמטרים האלו יש סוג פרטי PRIVATE
לכן:
X: Xtest Z: 12
כי:
public class TestClass { private String x; private int z; public int getX() { return x;//Xtest } public String getZ() { return z;//12 } }