Java實現數據共享的三種方式
目錄
內容
1、類的靜態變量
-
示例:老師和學生共用一間教室
-
Classroom類代碼1-1:教室類
package innerclass; public class Classroom { private String no; public Classroom(String no) { super(); this.no = no; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } @Override public String toString() { return this.no + "號教室"; } }
-
Teacher類代碼1-2:老師類
package innerclass; public class Teacher { private String name; private Student stu; public Teacher(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
-
Student類代碼1-3:學生類
package innerclass; public class Student { private String name; private Teacher teacher; public Student(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
-
Test2類代碼1-4:測試類
package innerclass; public class Test2 { static Classroom room = new Classroom("002"); public static void main(String[] args) { Teacher t = new Teacher("高老師"); Student s = new Student("小飛"); System.out.println(t.getName() + "在" + Test2.room + "教課"); System.out.println(s.getName() + "在" + Test2.room + "上課"); } }
-
測試結果:
高老師在002號教室教課 小飛在002號教室上課
-
解析:類的靜態成員在內存中只有1個
2、類內聲明共享數據類型的引用
-
示例:一名老師負責指導一名學生
-
Teacher類代碼2-1:老師類
package innerclass; public class Teacher { private String name; private Student stu; public Teacher(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setStu(Student stu) { this.stu = stu; } @Override public String toString() { return this.name; } public void teacher() { System.out.println(this.name + "指導" + this.stu.getName() + "同學"); } }
-
Student類代碼2-2:學生類
package innerclass; public class Student { private String name; private Teacher teacher; public Student(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } @Override public String toString() { return this.name; } public void study() { System.out.println(this.name + "同學"+ "由" + this.teacher.getName() + "指導"); } }
-
Test1類代碼2-3:測試類
package innerclass; public class Test1 { public static void main(String[] args) { Teacher t = new Teacher("王老師"); Student stu = new Student("小明"); t.setStu(stu); stu.setTeacher(t); t.teacher(); stu.study(); } }
-
測試結果:
王老師指導小明同學 小明同學由王老師指導
3、內部類
-
示例:同上
-
代碼3-1:
package innerclass; public class Test3 { public static void main(String[] args) { Classroom1 room = new Classroom1("003"); Classroom1.Teacher t = room.new Teacher("李老師"); Classroom1.Student s = room.new Student("小田"); t.display(); s.display(); } } class Classroom1 { private String no; class Teacher { private String name; public Teacher(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void display() { System.out.println(this.name + "在" + no + "號教室" + "教課"); } } class Student { private String name; public Student(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void display() { System.out.println(this.name + "在" + no + "號教室" + "上課"); } } public Classroom1(String no) { super(); this.no = no; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } }
後記 :
本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785
前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA