Java實現數據共享的三種方式

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章