Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

readme.md

Tính đóng gói trong lập trình hướng đối tượng

Tạo package pA chứa 2 class A và B, tạo package pB chứa 1 class C kế thừa đối tượng A

Ví dụ 1

Tạo một thuộc tính int a trong class A mà không cho phép truy cập trực tiếp tự bên ngoài class.

🟢 Bài giải mẫu 📚

Để giới hạn phạm vi sử dụng chỉ dùng trong một class chúng ta sẽ sử dụng private

  • A.java
package pA;

public class A {
	private int a;
}

Ví dụ 2

Tiếp tục tạo thêm hàm inc() có thể tăng giá trị của a thêm 1 đơn vị trong class A, hàm này chỉ dùng được trong cùng một package

🟢 Bài giải mẫu 📚

Để sử dụng được trong cùng một package chúng ta sẽ sử dụng default

Như thế thì hàm inc() chỉ được dùng trong các class của package pA

  • A.java
package pA;

public class A {
	private int a;
	
	void inc() {
		this.a++;
	}
}

Ví dụ 3

Tiếp tục tạo thêm hàm sqr() có thể trả về giátrị của a^2 class A, hàm này chỉ dùng được trong cùng một package và dùng trong các class C (supclass)

🟢 Bài giải mẫu 📚

Để sử dụng được trong cùng một package và dùng được trong các subclass chúng ta sẽ sử dụng protected

Như thế thì hàm sqr() chỉ được dùng trong các class của package pA và các lớp con của class A

  • A.java
package pA;

public class A {
	private int a;
	
	void inc() {
		this.a++;
	}
	
	protected int sqr() {
		return a * a;
	}
}

Lúc này hàm sqr() có thể được dùng cùng package và trong các lớp con của class A.

  • B.java
package pA;

public class B {
	public B() {
		A a = new A();
		a.sqr();
	}
}
  • C.java
package pB;

import pA.A;

public class C extends A{
	public C() {
		System.out.println(sqr());
	}
}

Ví dụ 4

Tiếp tục tạo thêm hàm setA() và getA() có thể thảy đổi và trả về giá trị của a trong class A, hàm này chỉ dùng được trong cả project

🟢 Bài giải mẫu 📚

Để giới hạn phạm vi sử dụng trong cả project chúng ta sẽ sử dụng public

  • A.java
package pA;

public class A {
	private int a;
	
	void inc() {
		this.a++;
	}
	
	protected int sqr() {
		return a * a;
	}

	public int getA() {
		return a;
	}

	public void setA(int a) {
		this.a = a;
	}
}