Tính đa hình trong java

Tính đa hình trong java

Tính đa hình trong java

Đa hình trong Java là một khái niệm mà chúng ta có thể thực hiện một hành động theo những cách khác nhau. Đa hình có nguồn gốc từ 2 từ Hy L...
Comment tháng 6 09, 2021

Đa hình trong Java là một khái niệm mà chúng ta có thể thực hiện một hành động theo những cách khác nhau. Đa hình có nguồn gốc từ 2 từ Hy Lạp: poly và morphs. Từ "poly" có nghĩa là nhiều và "morphs" có nghĩa là các hình thức. Vì vậy, đa hình có nghĩa là nhiều dạng.

hai kiểu đa hình trong Java: đa hình thời gian biên dịch và đa hình thời gian chạy. Chúng ta có thể thực hiện đa hình trong java bằng cách nạp chồng phương thức và ghi đè phương thức.
Nếu bạn nạp chồng một phương thức tĩnh trong Java, thì đó là ví dụ về tính đa hình thời gian biên dịch. Ở đây, chúng ta sẽ tập trung vào tính đa hình thời gian chạy trong java.

Tính đa hình trong java

Cùng đọc: Lập trình hướng đối tượng java

Đa hình thời gian chạy trong Java

Đa hình thời gian chạy hoặc Điều phối phương thức động là một quá trình trong đó lời gọi đến một phương thức bị ghi đè được giải quyết trong thời gian chạy chứ không phải thời gian biên dịch.
Trong quá trình này, một phương thức ghi đè được gọi thông qua biến tham chiếu của một lớp cha. Việc xác định phương thức được gọi dựa trên đối tượng được tham chiếu bởi biến tham chiếu.
Đầu tiên chúng ta hãy hiểu upcasting trước khi Runtime Polymorphism.
Nếu biến tham chiếu của lớp Cha tham chiếu đến đối tượng của lớp Con, nó được gọi là upcasting

class A{}  
class B extends A{}

A a=new B();//upcasting 

Để upcasting, chúng ta có thể sử dụng biến tham chiếu của kiểu lớp hoặc kiểu giao diện.

interface I{}  
class A{}  
class B extends A implements I{}  

Ví dụ về Đa hình thời gian chạy của Java

Trong ví dụ này, chúng tôi đang tạo hai lớp Bike và Splendor. Lớp Splendor mở rộng lớp Bike và ghi đè phương thức run () của nó. Chúng ta đang gọi phương thức run bằng biến tham chiếu của lớp Parent. Vì nó tham chiếu đến đối tượng lớp con và phương thức lớp con ghi đè phương thức lớp cha, phương thức lớp con được gọi trong thời gian chạy.

Vì lệnh gọi phương thức được xác định bởi trình biên dịch không JVM, nó được gọi là đa hình thời gian chạy.

class Bike{  
  void run(){System.out.println("running");}  
}  
class Splendor extends Bike{  
  void run(){System.out.println("running safely with 60km");}  
 
  public static void main(String args[]){  
    Bike b = new Splendor();//upcasting  
    b.run();  
  }  

Ví dụ về đa hình thời gian chạy trong Java

Hãy xem xét một tình huống trong đó Ngân hàng là một lớp cung cấp một phương pháp để tính lãi suất. Tuy nhiên, mức lãi suất có thể khác nhau tùy theo từng ngân hàng. Ví dụ, các ngân hàng SBI, ICICI và AXIS đang cung cấp lãi suất 8,4%, 7,3% và 9,7%.

class Bank{  
float getRateOfInterest(){return 0;}  
}  
class SBI extends Bank{  
float getRateOfInterest(){return 8.4f;}  
}  
class ICICI extends Bank{  
float getRateOfInterest(){return 7.3f;}  
}  
class AXIS extends Bank{  
float getRateOfInterest(){return 9.7f;}  
}  
class TestPolymorphism{  
public static void main(String args[]){  
Bank b;  
b=new SBI();  
System.out.println("SBI Rate of Interest: "+b.getRateOfInterest());  
b=new ICICI();  
System.out.println("ICICI Rate of Interest: "+b.getRateOfInterest());  
b=new AXIS();  
System.out.println("AXIS Rate of Interest: "+b.getRateOfInterest());  
}  

Kết quả:

SBI Rate of Interest: 8.4
ICICI Rate of Interest: 7.3
AXIS Rate of Interest: 9.7

Ví dụ về đa hình thời gian chạy trong Java

class Shape{  
void draw(){System.out.println("drawing...");}  
}  
class Rectangle extends Shape{  
void draw(){System.out.println("drawing rectangle...");}  
}  
class Circle extends Shape{  
void draw(){System.out.println("drawing circle...");}  
}  
class Triangle extends Shape{  
void draw(){System.out.println("drawing triangle...");}  
}  
class TestPolymorphism2{  
public static void main(String args[]){  
Shape s;  
s=new Rectangle();  
s.draw();  
s=new Circle();  
s.draw();  
s=new Triangle();  
s.draw();  
}  
Kết quả:

drawing rectangle...
drawing circle...
drawing triangle...

Blogger Comments


Không có nhận xét nào. Chúc mừng bạn là người đầu tiên.

  • Kí tự đặc biệt
  • Tôi Share
  • Star Mạnh Blog
  • Văn Tuấn Blog
  • Tuổi Trẻ IT
  • Văn Thắng Blog
  • Duy Blogs
  • Star Sinh Blog
  • Lê Bá Long IT
  • Đặt liên kết
  • Đặt liên kết
  • Đặt liên kết