[LTM] Chương 4.8 : this() và super();


Biến, phương thức và lớp Final

  • Biến Final - Final Variables

  • Phương thức Final - Final Methods

  • Lớp Final - Final Classes



Biến Final

  • Từ khóa “final” được sử dụng với biến để chỉ rằng giá trị của biến là hằng số.
  • Hằng số là giá trị được gán cho biến vào thời điểm khai báo và sẽ không thay đổi về sau.


Phương thức hằng (Final)
Được sử dụng để ngăn chặn việc ghi đè (overriding) hoặc che lấp (hidden) trong các lớp Java.

Phương thức được khai báo là private hoặc là một thành phần của lớp final thì được xem là phương thức hằng.

Phương thức hằng không thể khai báo là trừu tượng (abstract).


ex
Các phương thức được khai báo là final không thể được nạp chồng.
class A {
 final void method(){
 }
}
class B extends A{
final void method(){ // error
  }
}
Lớp hằng - Final Classes
Là lớp không có lớp con.

Được sử dụng để hạn chế việc thừa kế và ngăn chặn việc sửa đổi một lớp.

Là lớp có thể hoặc không có các phương thức hằng.

Lớp hằng có thể tạo đối tượng


Lớp trừu tượng (Abstract class)


  1. Định nghĩa lớp trừu tượng
  2. Hiện thực lớp trừu tượng
  3. Định nghĩa phương thức trừu tượng

Lớp trừu tượng

  • Dùng như một khung thức để cung cấp hành vi cho các lớp khác
  • Có thể không chứa hoặc chứa nhiều phương thức trừu tượng
  • Không có thể hiện thuộc lớp này.
  • Lớp con phải hiện thực các phương thức trừu tượng được đặc tả trong lớp cơ sở. Nếu không nó phải được đặc tả là trừu tượng.
  • Đặc tả lớp trừu tượng bằng từ khoá abstract trước từ khoá class

Phương thức trừu tượng
Phương thức chỉ có phần đặc tả và không có phần hiện thực
Có từ khoá abstract
Phần đặc tả không chứa bất kỳ dấu ngoặc nhọn nào và kết thúc bằng dấu chấm phẩy

Một phương thức chỉ là một thoả thuận lớp con sẽ cung cấp phần hiện thực

Nếu một lớp chứa phương thức trừu tượng thì chính nó cũng phải được đặc tả là trừu tượng

Ví dụ lớp và phương thức trừu tượng

Tóm tắt!

  1. Class Object
  2. Thừa kế
  3. Khởi tạo trong thừa kế
  4. Phương thức ghi đè
  5. Phương thức nạp chồng
  6. Lớp trừu tượng “abstract”
  7. Sử dụng từ khóa “final”
  8. Giao tiếp

Lớp con (trong /inner)
Quan hệ:

  • lớp ngoài (enclosing, outter class)
  • Lớp trong (nested, inner class):

Là lớp khai báo bên trong 1 lớp khác
Lớp trong có quyền truy xuất lớp ngoài
Lớp ngoài chỉ truy xuất được lớp con khi có một thể hiện của lớp trong (bằng toán tử new)
Lợi ích: có thể viết code truy xuất lớp ngoài từ lớp trong mà không cần định nghĩa đối tượng lớp ngoài

Cú pháp:
Class Outter
{….
Class Inner
{….
}
}
ex
public class Outer{
    private String st = "Outer Class"; //
    InnerClass innerClass = new InnerClass();
    void getOuterS(){
      System.out.println(st);
    }
    void getInnerS(){
System.out.println(innerClass.inner);
    }
    class InnerClass{
   private String inner = "Inner Class";
   
 void getInnerS(){
     System.out.println(inner);
        }
  void getOuterS(){
System.out.println(Outer.this.st);
        }
    }
    public static void main(String[]   args){
      Outer OutObj = new Outer();
        OutObj.getOuterS();
        OutObj.getInnerS();
}
}
Package
là nơi tổ chức các lớp và các giao diện bạn.
Mỗi gói gồm có nhiều lớp, và/hoặc các giao diện được coi như là các thành viên của nó
Các lớp với những tên giống nhau có thể đặt vào các gói khác nhau.
Tạo một gói: ex
package mypackage;
Nhập một lớp: ex
import java.mypackage.Calculate;
Nhập toàn bộ một gói, ex:
import java.mypackage.*;
Sau khi biên dịch, cấu trúc gói sẽ sinh ra

Package
Tạo một tham chiếu đến các thành phần của gói:
//import mypackage.Calculate;
class PackageDemo{
  public static void main(String args[]){
  //  Calculate calc = new Calculate();
mypackage.Calculate calc = new mypackage.Calculate();
 }
}
Bài tập:
Xây dựng lớp cơ sở Dagiac, lớp con HCN, HV,HBH…(n cạnh)
Khởi tạo giá trị số cạnh
Hàm tính chu vi


Diện tích (kế thừa + mở rộng)