đa hình trong java

..

Đa hình là một khái niệm mạnh mẽ trong lập trình hướng đối tượng (OOP).Nó cho phép bạn tạo các lớp có thể hoạt động theo những cách khác nhau tùy thuộc vào ngữ cảnh.Điều này có thể được sử dụng để tạo mã linh hoạt và mở rộng hơn.

Có hai loại đa hình chính trong Java:

*** Biên dịch đa hình thời gian **, còn được gọi là ** đa hình tĩnh **, đạt được thông qua quá tải phương pháp.Điều này xảy ra khi bạn có nhiều phương thức có cùng tên, nhưng chữ ký khác nhau.Trình biên dịch có thể xác định phương thức nào để gọi vào thời điểm biên dịch dựa trên các loại đối số được truyền cho phương thức.
*** Đa hình thời gian chạy **, còn được gọi là ** đa hình động **, đạt được thông qua việc ghi đè phương pháp.Điều này xảy ra khi bạn có một lớp con ghi đè một phương thức từ siêu lớp của nó.Hệ thống thời gian chạy Java xác định phương thức nào sẽ gọi theo thời gian chạy dựa trên loại đối tượng thực sự đang được sử dụng.

Dưới đây là một ví dụ về tính đa hình thời gian biên dịch trong Java:

`` `java
lớp công khai động vật {
công khai void speak () {
System.out.println ("nói động vật");
}
}

Chó lớp công cộng mở rộng động vật {
@Ghi đè
công khai void speak () {
System.out.println ("Chó sủa");
}
}

Mèo lớp công cộng mở rộng động vật {
@Ghi đè
công khai void speak () {
System.out.println ("Cat Meowing");
}
}

lớp công khai chính {
công khai void void main (String [] args) {
Động vật động vật = động vật mới ();
động vật.speak ();// nói động vật

Dog Dog = New Dog ();
Dog.Speak ();// Chó sủa

Cat Cat = New Cat ();
Cat.Speak ();// mèo meo meo
}
}
`` `

Trong ví dụ này, phương thức `speak ()` bị quá tải.Điều này có nghĩa là có hai phiên bản của phương pháp, một trong lớp 'Animal` và một trong lớp `Dog`.Trình biên dịch có thể xác định phương thức nào để gọi vào thời điểm biên dịch dựa trên loại đối tượng được truyền cho phương thức.Trong trường hợp này, biến `động vật` thuộc loại` động vật`, do đó, phiên bản `động vật` của phương thức` speak () `được gọi.Các biến `Dog` và` Cat` có loại `Dog` và` Cat`, do đó, các phiên bản `Dog` và` Cat` của phương thức `speak ()` được gọi.

Dưới đây là một ví dụ về tính đa hình thời gian chạy trong Java:

`` `java
lớp công khai động vật {
công khai void speak () {
System.out.println ("nói động vật");
}
}

Chó lớp công cộng mở rộng động vật {
@Ghi đè
công khai void speak () {
System.out.println ("Chó sủa");
}
}

Mèo lớp công cộng mở rộng động vật {
@Ghi đè
công khai void speak () {
System.out.println ("Cat Meowing");
}
}

lớp công khai chính {
công khai void void main (String [] args) {
// Tạo một mảng động vật
Động vật [] động vật = động vật mới [] {new Animal (), New Dog (), New Cat ()};

// lặp lại thông qua mảng và gọi phương thức speak () trên mỗi đối tượng
for (động vật động vật: động vật) {
động vật.speak ();
}
}
}
`` `

Trong ví dụ này, mảng `động vật` là một loạt các vật thể 'động vật'.Tuy nhiên, các đối tượng trong mảng thuộc các loại khác nhau: `động vật`,` chó` và `cat`.Khi chúng ta lặp lại qua mảng và gọi phương thức `speak ()` trên mỗi đối tượng, hệ thống thời gian chạy java sẽ xác định phiên bản nào của phương thức `speak ()` để gọi theo thời gian chạy dựa trên loại đối tượng thực sựđã sử dụng.Trong trường hợp này, phương thức `speak ()` của đối tượng `animal` được gọi cho đối tượng đầu tiên trong mảng, phương thức` speak () `của đối tượng` dog` được gọi cho đối tượng thứ hai trong mảng,Và `nói
=======================================
#Programming #Java #oop #inheritance ## Polymorphism in Java

Polymorphism is a powerful concept in object-oriented programming (OOP). It allows you to create classes that can behave in different ways depending on the context. This can be used to create more flexible and extensible code.

There are two main types of polymorphism in Java:

* **Compile-time polymorphism**, also known as **static polymorphism**, is achieved through method overloading. This occurs when you have multiple methods with the same name, but different signatures. The compiler can determine which method to call at compile time based on the types of the arguments passed to the method.
* **Run-time polymorphism**, also known as **dynamic polymorphism**, is achieved through method overriding. This occurs when you have a subclass that overrides a method from its superclass. The Java runtime system determines which method to call at run time based on the type of the object that is actually being used.

Here is an example of compile-time polymorphism in Java:

```java
public class Animal {
public void speak() {
System.out.println("Animal speaking");
}
}

public class Dog extends Animal {
@Override
public void speak() {
System.out.println("Dog barking");
}
}

public class Cat extends Animal {
@Override
public void speak() {
System.out.println("Cat meowing");
}
}

public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.speak(); // Animal speaking

Dog dog = new Dog();
dog.speak(); // Dog barking

Cat cat = new Cat();
cat.speak(); // Cat meowing
}
}
```

In this example, the `speak()` method is overloaded. This means that there are two versions of the method, one in the `Animal` class and one in the `Dog` class. The compiler can determine which method to call at compile time based on the type of the object that is passed to the method. In this case, the `animal` variable is of type `Animal`, so the `Animal` version of the `speak()` method is called. The `dog` and `cat` variables are of type `Dog` and `Cat`, respectively, so the `Dog` and `Cat` versions of the `speak()` method are called.

Here is an example of run-time polymorphism in Java:

```java
public class Animal {
public void speak() {
System.out.println("Animal speaking");
}
}

public class Dog extends Animal {
@Override
public void speak() {
System.out.println("Dog barking");
}
}

public class Cat extends Animal {
@Override
public void speak() {
System.out.println("Cat meowing");
}
}

public class Main {
public static void main(String[] args) {
// Create an array of Animals
Animal[] animals = new Animal[] { new Animal(), new Dog(), new Cat() };

// Iterate through the array and call the speak() method on each object
for (Animal animal : animals) {
animal.speak();
}
}
}
```

In this example, the `animals` array is an array of `Animal` objects. However, the objects in the array are of different types: `Animal`, `Dog`, and `Cat`. When we iterate through the array and call the `speak()` method on each object, the Java runtime system determines which version of the `speak()` method to call at run time based on the type of the object that is actually being used. In this case, the `speak()` method of the `Animal` object is called for the first object in the array, the `speak()` method of the `Dog` object is called for the second object in the array, and the `speak
 
Nếu một lớp con thực hiện một phương thức trừu tượng trong siêu lớp, nhưng việc thực hiện phương thức của siêu lớp là khác nhau, điều gì sẽ xảy ra khi một đối tượng của lớp con được chuyển sang một phương thức mong đợi một đối tượng của siêu lớp?
 
Join ToolsKiemTrieuDoGroup
Back
Top
AdBlock Detected

We get it, advertisements are annoying!

Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

I've Disabled AdBlock