NỘI DUNG BÀI VIẾT
Mục tiêu
Luyện tập sử dụng Access modifier
Mô tả
Luyện tập với private, public, default, protected
Hướng dẫn nộp bài:
- Up mã nguồn lên github
- Paste link github vào phần nộp bài
Hướng dẫn
1. Private
Với Private Access Modifier, chỉ có thể truy cập trong lớp.
Trong ví dụ này, chúng ta tạo hai lớp A và Simple. Lớp A chứa thuộc tính và phương thức private. Chúng ta sẽ truy cập các thành phần này từ bên ngoài lớp, do đó sẽ có lỗi compile-time xảy ra:
“`
class A{
private int data=40;
private void msg(){System.out.println(“Hello java”);}
}
public class Simple{
public static void main(String args[]){
A obj=new A();
System.out.println(obj.data);//Compile Time Error
obj.msg();//Compile Time Error
}
}
“`
2. Default
Nếu bạn không sử dụng bất kỳ modifier nào, nó được coi là mặc định. Default chỉ có thể truy cập trong Package. Nó không thể được truy cập từ bên ngoài Package. Nó cung cấp khả năng tiếp cận nhiều hơn Private. Nhưng, nó hạn chế hơn Protected và Public.
Trong ví dụ này, chúng ta sẽ tạo ra hai Package pack và mypack. Chúng ta đang truy cập lớp A từ bên ngoài Package của nó, vì lớp A không là Public, vì vậy nó không thể được truy cập từ bên ngoài Package:
“`
//save by A.java
package pack;
class A{
void msg(){System.out.println(“Hello”);}
}
“`
“`
//save by B.java
package mypack;
import pack.*;
class B{
public static void main(String args[]){
A obj = new A();//Compile Time Error
obj.msg();//Compile Time Error
}
} “`
Trong ví dụ trên, phạm vi của lớp A và phương thức msg() là default để nó không thể được truy cập từ bên ngoài Package.
3. Protected
Protected có thể truy cập trong Package và bên ngoài Package nhưng chỉ thông qua kế thừa.
Protected có thể được áp dụng trên thuộc tính, phương thức và hàm tạo. Nó không thể được áp dụng trên lớp.
Nó cung cấp nhiều khả năng truy cập hơn Default.
Trong ví dụ này, chúng ta sẽ tạo ra hai Package pack và mypack. Lớp A của Package pack là public, vì vậy có thể được truy cập từ bên ngoài Package. Nhưng phương thức msg() của Package này được khai báo là Protected, vì vậy nó có thể được truy cập từ bên ngoài lớp thông qua kế thừa.
“`
//save by A.java
package pack;
public class A{
protected void msg(){System.out.println(“Hello”);}
}
“`
“`
//save by B.java
package mypack;
import pack.*;
class B extends A{
public static void main(String args[]){
B obj = new B();
obj.msg();
}
}
“`
“`Output:Hello“`
4. Public
Public có thể truy cập ở mọi nơi. Nó có phạm vi rộng nhất trong số tất cả các Access Modifier.
“`
//save by A.java
package pack;
public class A{
public void msg(){System.out.println(“Hello”);}
}
“`
“`
//save by B.java
package mypack;
import pack.*;
class B{
public static void main(String args[]){
A obj = new A();
obj.msg();
}
}
“`
“`Output:Hello“`