自学内容网 自学内容网

Java面向对象. 多态

目录

java多态是什么东西?首先要理解什么是多态

Java多态指同一行为具有多个不同表现形式。如父类引用指向子类对象,调用重写方法时呈现不同结果。

1.多态的概念

一、多态的基本概念

二、多态的实现方式

接口实现

三、多态的好处

提高代码的可扩展性

2.多态的运用

继承和多态:通过继承实现多态,即子类对象可以替换父类对象并调用父类的方法。这样,在不改变原有代码的情况下,可以通过添加新的子类对象来扩展功能。

接口和多态:接口定义了一组方法的规范,不同的类可以实现同一个接口并提供自己的具体实现。通过接口,可以统一对不同的类对象进行操作,并调用相同的方法。

方法重载和多态:方法重载是指在一个类中定义多个同名但参数列表不同的方法。通过方法重载,可以根据传入的参数类型和个数的不同来选择调用不同的方法。

泛型和多态:泛型是一种参数化类型的机制,可以在定义类、接口和方法时使用类型参数。通过泛型,可以编写通用的代码,适用于不同类型的对象。

多态的运用主要用处:

3.instanceof   

instanceof的运用主要包括以下几个方面:

多态判断:在多态中,可以使用instanceof来判断一个对象是否是某个父类的实例。通过这种方式,可以在运行时动态地确定对象的类型,并根据不同的类型执行不同的操作。

接口判断:除了类的判断,instanceof也可以用于判断一个对象是否实现了某个接口。可以通过instanceof来判断对象是否属于某个接口的实例,以便进行相应的操作。


java多态是什么东西?首先要理解什么是多态

Java多态指同一行为具有多个不同表现形式。如父类引用指向子类对象,调用重写方法时呈现不同结果。

1.多态的概念

一、多态的基本概念


在Java中,多态(Polymorphism)是面向对象编程的一个重要概念。多态字面上的意思是“多种形态”。它允许不同类的对象对同一消息做出不同的响应。

二、多态的实现方式


方法重写(Override)
当子类继承父类时,可以重写父类中的方法。例如,有一个父类 Animal ,其中有一个 makeSound() 方法,代码可能如下:

 
class Animal {
    public void makeSound() {
        System.out.println("Animal makes a sound");
    }
}


 
然后有一个子类 Dog ,它重写了 makeSound() 方法:
 

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


 
当我们创建一个 Dog 对象并调用 makeSound() 方法时,它执行的是 Dog 类中重写后的方法,而不是 Animal 类中的方法。


接口实现


接口定义了一组方法签名,但没有方法体。一个类可以实现一个或多个接口。例如,有一个 Flyable 接口:
 

interface Flyable {
    void fly();
}


 
然后有类 Bird 和 Plane 都实现了 Flyable 接口:
 

class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("Bird flies with wings");
    }
}

class Plane implements Flyable {
    @Override
    public void fly() {
        System.out.println("Plane flies with engines");
    }
}


 
这里 Bird 和 Plane 对 fly 方法有不同的实现,这是多态的一种体现。


三、多态的好处


提高代码的可扩展性



假设我们有一个处理 Animal 对象的方法,在不改变这个方法的代码的情况下,可以很容易地将新的 Animal 子类对象传递进去,只要这些子类正确重写了相关方法
 

class Zoo {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();
        makeAnimalSound(animal1);
        makeAnimalSound(animal2);
    }

    public static void makeAnimalSound(Animal animal) {
        animal.makeSound();
    }
}


 
如果以后创建了新的 Animal 子类,如 Rabbit ,只要 Rabbit 重写了 makeSound() 方法,就可以直接将 Rabbit 对象传递给 makeAnimalSound 方法。
 

2.多态的运用

多态是面向对象编程中的重要概念,它允许通过不同的对象以统一的方式调用同一个方法或函数。

多态的运用主要体现:

  1. 继承和多态:通过继承实现多态,即子类对象可以替换父类对象并调用父类的方法。这样,在不改变原有代码的情况下,可以通过添加新的子类对象来扩展功能。

  2. 接口和多态:接口定义了一组方法的规范,不同的类可以实现同一个接口并提供自己的具体实现。通过接口,可以统一对不同的类对象进行操作,并调用相同的方法。

  3. 方法重载和多态:方法重载是指在一个类中定义多个同名但参数列表不同的方法。通过方法重载,可以根据传入的参数类型和个数的不同来选择调用不同的方法。

  4. 泛型和多态:泛型是一种参数化类型的机制,可以在定义类、接口和方法时使用类型参数。通过泛型,可以编写通用的代码,适用于不同类型的对象。

多态的运用主要用处:

可以提高代码的灵活性、可扩展性和复用性,降低代码的耦合度。

3.instanceof   

instanceof是Java中的一个运算符,用于判断一个对象是否属于某个类或其子类的实例。

对象 instanceof 类名

对象是要进行判断的对象,类名是要判断的类或接口。

instanceof的运用主要包括以下几个方面:

  1. 多态判断:在多态中,可以使用instanceof来判断一个对象是否是某个父类的实例。通过这种方式,可以在运行时动态地确定对象的类型,并根据不同的类型执行不同的操作。

  2. 接口判断:除了类的判断,instanceof也可以用于判断一个对象是否实现了某个接口。可以通过instanceof来判断对象是否属于某个接口的实例,以便进行相应的操作。

使用instanceof可以在程序中根据对象的类型进行不同的处理逻辑,以提高代码的灵活性和可扩展性.


原文地址:https://blog.csdn.net/yyayyl_xzq/article/details/144161346

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!