Home Java Javagetting Started java object-oriented - detailed introduction to polymorphism

java object-oriented - detailed introduction to polymorphism

Nov 30, 2019 pm 02:21 PM
java Polymorphism object-oriented

java object-oriented - detailed introduction to polymorphism

1. Overview

Polymorphism is the third major feature of object-oriented after encapsulation and inheritance.

In life, for example, running movements, kittens, puppies and elephants run differently. Another example is the movement of flying. Insects, birds and airplanes also fly differently. It can be seen that the same behavior can be manifested in different forms through different things. Polymorphism describes this state.

Polymorphism:

refers to the same behavior with multiple different manifestations.

Prerequisite [Key points]

1. Inherit or implement [Choose one of two]

2. Rewrite the method [Meaning: Not important Write, meaningless]

3. The parent class reference points to the subclass object [Format reflection]

Free online learning video recommendation: java video

2. Polymorphic manifestation

Format of polymorphic manifestation:

父类类型 变量名 = new 子类对象; 
变量名.方法名();
Copy after login

Parent class type: refers to the parent class type inherited by the subclass object, or implemented The parent interface type.

The code is as follows:

Fu f = new Zi(); 
f.method();
Copy after login

When calling a method using polymorphism, first check whether the method exists in the parent class. If not, A compilation error occurs; if so, the overridden method of the subclass is executed.

The code is as follows:

Define the parent class:

java object-oriented - detailed introduction to polymorphism

Define the subclass:

java object-oriented - detailed introduction to polymorphism

Define test class:

java object-oriented - detailed introduction to polymorphism

3. The benefits of polymorphism

The actual development process In the method, the parent class type is used as a method formal parameter to pass the subclass object to the method and call the method, which can better reflect the scalability and convenience of polymorphism.

The code is as follows:

Define the parent class:

java object-oriented - detailed introduction to polymorphism

Define the subclass:

java object-oriented - detailed introduction to polymorphism

Define test class:

public class Test {
    public static void main(String[] args) {
        // 多态形式,创建对象
        // Cat c = new Cat();
        // Dog d = new Dog();

        // 调用showCatEat showCatEat(c);
        // 调用showDogEat
        showDogEat(d);

        /*
        以上两个方法, 均可以被showAnimalEat(Animal a)方法所替代而执行效果一致
        */
        showAnimalEat(c);
        showAnimalEat(d);
    }

    public static void showCatEat(Cat c) {
        c.eat();
    }

    public static void showDogEat(Dog d) {
        d.eat();
    }

    public static void showAnimalEat(Animal a) {
        a.eat();
    }
}
Copy after login

When the eat method is executed, polymorphism stipulates that the method rewritten by the subclass is executed, so the effect is naturally consistent with the showCatEat and showDogEat methods, so showAnimalEat can completely replace the above two method.

Not only replacement, in terms of scalability, no matter how many subclasses appear in the future, we do not need to write the showXxxEat method, we can directly use showAnimalEat to complete it.

So, the benefit of polymorphism is that it can make the program writing easier and have good expansion.

4. Reference type conversion

Polymorphic transformation is divided into two types: upward transformation and downward transformation:

Upcasting

Upcasting: Polymorphism itself is the process of upconverting subclass types to parent class types. This process is the default.

When the parent class reference points to a subclass object, it is an upward transformation.

Usage format:

父类类型 变量名 = new 子类类型(); 
如:Animal a = new Cat();
Copy after login

Downcasting

The process of downconverting parent class type to subclass type, this process is mandatory.

For a subclass object that has been upwardly transformed, to convert the parent class reference into a subclass reference, you can use the format of forced type conversion, which is downward transformation.

Usage format:

子类类型 变量名 = (子类类型) 父类变量名; 
如 :Cat c =(Cat) a;
Copy after login

Transformation demonstration, the code is as follows:

Define class:

java object-oriented - detailed introduction to polymorphism

Define test class:

java object-oriented - detailed introduction to polymorphism

Transformation exception

转型的过程中,一不小心就会遇到这样的问题,请看如下代码:

java object-oriented - detailed introduction to polymorphism

这段代码可以通过编译,但是运行时,却报出了ClassCastException,类型转换异常!这是因为,明明创建了Cat类型对象,运行时,当然不能转换成Dog对象的。这两个类型并没有任何继承关系,不符合类型转换的定义。

为了避免ClassCastException的发生,Java提供了 关键字,给引用变量做类型的校验。

格式如下:

变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false。
Copy after login

所以,转换前,我们最好先做一个判断,代码如下:

java object-oriented - detailed introduction to polymorphism

想学习更多相关教程请访问:java入门学习

The above is the detailed content of java object-oriented - detailed introduction to polymorphism. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Perfect Number in Java Perfect Number in Java Aug 30, 2024 pm 04:28 PM

Guide to Perfect Number in Java. Here we discuss the Definition, How to check Perfect number in Java?, examples with code implementation.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Guide to Weka in Java. Here we discuss the Introduction, how to use weka java, the type of platform, and advantages with examples.

Smith Number in Java Smith Number in Java Aug 30, 2024 pm 04:28 PM

Guide to Smith Number in Java. Here we discuss the Definition, How to check smith number in Java? example with code implementation.

Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

In this article, we have kept the most asked Java Spring Interview Questions with their detailed answers. So that you can crack the interview.

Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Guide to TimeStamp to Date in Java. Here we also discuss the introduction and how to convert timestamp to date in java along with examples.

Java Program to Find the Volume of Capsule Java Program to Find the Volume of Capsule Feb 07, 2025 am 11:37 AM

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

Create the Future: Java Programming for Absolute Beginners Create the Future: Java Programming for Absolute Beginners Oct 13, 2024 pm 01:32 PM

Java is a popular programming language that can be learned by both beginners and experienced developers. This tutorial starts with basic concepts and progresses through advanced topics. After installing the Java Development Kit, you can practice programming by creating a simple "Hello, World!" program. After you understand the code, use the command prompt to compile and run the program, and "Hello, World!" will be output on the console. Learning Java starts your programming journey, and as your mastery deepens, you can create more complex applications.

See all articles