Giới thiệu về tính đa hình

Nhập môn Lập trình Hướng đối tượng với Java

Sani Yusuf

Lead Software Engineering Content Developer

Minh họa tính đa hình

  • Tính đa hình (polymorphism) trong Lập trình Hướng đối tượng (OOP) cho phép đối tượng tồn tại ở nhiều dạng
  • Minh họa kế thừa lớp

  // Lớp trừu tượng Car
  abstract class Car {

    // Phương thức trừu tượng drive
    abstract void drive(); 
    // Không có triển khai mã 

  }

  // Lớp Toyota kế thừa Car
  class Toyota extends Car {  

  }
  // Lớp Tesla kế thừa Car
  class Tesla extends Car {  

  }
  // Lớp Lamborghini kế thừa Car
  class Lamborghini extends Car {          

  }
Nhập môn Lập trình Hướng đối tượng với Java

Ghi đè phương thức

  • Từ khóa @Override cho phép tạo triển khai tùy chỉnh cho phương thức
  // Lớp trừu tượng Car
  abstract class Car {

    // Phương thức trừu tượng drive
    abstract void drive(); 
    // Không có triển khai mã 

  }


 class Toyota extends Car {  
   @Override // Từ khóa dùng để ghi đè
    void drive() {
      // Mã triển khai riêng cho Toyota
    }  
 }
 class Tesla extends Car {   
   @Override
    void drive() {
      // Mã triển khai riêng cho Tesla
    } 
 }
 class Lamborghini extends Car {  
   @Override
    void drive() {
      // Mã triển khai riêng cho Lamborghini
    }   
 }
Nhập môn Lập trình Hướng đối tượng với Java

Ghi đè phương thức interface


  // Interface ElectricCar
  interface ElectricCar {

    abstract void charge(); 
    // Không có triển khai mã 

  }


  • Nên dùng @Override khi triển khai phương thức từ interface

  // Lớp Tesla triển khai 
  // interface ElectricCar
  class Tesla implements ElectricCar {

    // Phải triển khai phương thức charge
    @Override
    void charge(){
      // Triển khai sạc riêng cho Tesla
      // Kế thừa chọn lọc với interface
    }          
  }













Nhập môn Lập trình Hướng đối tượng với Java

Quá tải phương thức

  • Overloading cho phép các phương thức cùng tên có triển khai khác nhau

  // Lớp Toyota 
  class Toyota {   

    void drive() {
      // Triển khai đầu tiên của phương thức drive
    }

// Phương thức drive quá tải void drive(int topSpeed) { // Triển khai thứ hai của drive } }
Nhập môn Lập trình Hướng đối tượng với Java

Quá tải constructor

  • Có thể quá tải constructor để có nhiều constructor trong cùng lớp
  // Lớp Honda
  class Honda {
    // Constructor thứ nhất
    public Honda(String color,
                 String model) {

    }

// Constructor thứ hai public Honda(String color, String model, String licensePlate) { } }

  public class Main {  
    public static void main(
      String[] args) {

      // Dùng constructor thứ nhất
      Honda hondaOne = 
        new Honda("Red", "Accord");


// Dùng constructor thứ hai Honda hondaTwo = new Honda("Red", "Civic", "FST-1977"); } }
Nhập môn Lập trình Hướng đối tượng với Java

Ayo berlatih!

Nhập môn Lập trình Hướng đối tượng với Java

Preparing Video For Download...