[Thực hành] Access modifier

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“`

Bài viết liên quan

Leave a Reply

Your email address will not be published.