STACKJAVA

Khai báo class trong Java, Nguyên tắc khai báo class

Khai báo class trong Java, Nguyên tắc khai báo class.

Khi bạn viết code trong Java, bạn viết các class hoặc các interface. Bên trong các class là các biến(variable) và phương thức (method). Việc bạn khai báo các class, biến, method ảnh hưởng nhiều tới code của bạn. Ví dụ một public method có thể truy cập từ bất kỳ đâu trong ứng dụng trong khi một method được đánh dấu là private thì chỉ có thể truy cập ở bên trong class đó.

Khai báo class trong Java, Nguyên tắc khai báo class stackjava.com

1. Nguyên tắc khai báo source file (file .java)

Các nguyên tắc khai báo class, sử dụng import và package trong source file (file .java):

Ví dụ 1:

Mình khai báo public class Student,

Ví dụ 2:

Khai báo class trong Java, Nguyên tắc khai báo class stackjava.com

2. Khai báo class và modifier

Modifier là các từ dùng trước các khai báo class, biến, method để thể hiện tính chất của class/biến/method đó. Tính chất mà modifier thể hiện có thể là khả năng truy cập (access modifiers) hoặc không phải về khả năng truy cập (non-access modifier):

2.1. Class Access

Khi nói một class (class A) có  truy cập tới (access) class khác (class B) nghĩa là A có thể làm một trong 3 điều sau:

2.2. Default Accesss

Một class với default access (không sử dụng các từ khóa public) sẽ chỉ được nhìn thấy và truy cập bởi các class khác trong cùng 1 package.

Ví dụ class A và class B ở 2 package khác nhau trong đó A là default access thì bên trong class B sẽ không thể tạo được thể hiện của class A.

package stackjava.com.demo.package2;

class Address {

}

Class sau đây khi compile sẽ bị lỗi:

package stackjava.com.demo.package1;
import stackjava.com.demo.package2.Address;

class Student {
  private Address address;
}

2.3. Public Access

Một class được khai báo với từ khóa public sẽ cho phép tất cả các class từ tất cả các package truy cập.

(Nếu truy cập public class ở 1 class thuộc package khác bạn vẫn phải khai báo import package cho class đó)

2.4. Strictfp modifier

2.5 Final class

Sử dụng từ khóa final class khi khai báo class nghĩa là class đó không thể được thừa kế bởi class khác.

Việc sử dụng từ khóa final như thế để đảm bảo chắc chắn rằng các method của class đó không bị ghi đè.

Nhiều class trong thư viện Java core cũng là final class, ví dụ class String trong java: public final class String trong package java.lang;

Ví dụ:

package stackjava.com.demo.package1;

public final class Person {

}

Person là một final class nên không thể bị thừa kế:

package stackjava.com.demo.package1;

public class Student extends Person{

}

2.6 Abstract class

Một abstract class (class được khai báo với từ khóa abstract) sẽ không thể tạo được thể hiện.

Mục đích của abstract class là để cho các class khác thừa kế. Người ta thường gom các thuộc tính chung của các class lại thành 1 abstract class và để cho chúng thừa kế abstract class này.

Ví dụ: Student và Lecture đều có các thuộc tính: name, dateOfBirth, sex. Bây giờ ta tạo một abstract class là Person chứa các thuộc tính đấy để cho Student và Lecture thừa kế:

package stackjava.com.demo.package1;

import java.util.Date;

public abstract class Person {
  protected String name;
  protected Date dateOfBirth;
  protected String sex;
}
package stackjava.com.demo.package1;

public class Student extends Person{

}
package stackjava.com.demo.package1;

public class Lecturer extends Person{

}

Bây giờ ta có thể tạo các thể hiện của Student nhưng không thể tạo thể hiện của Person.

Student student = new Student();
Person person = new Person();

 

Khai báo class trong Java, Nguyên tắc khai báo class stackjava.com

Xem thêm: https://stackjava.com/java-core

References:

SCJP pdf