Java面向对象. 多态
目录
Java多态指同一行为具有多个不同表现形式。如父类引用指向子类对象,调用重写方法时呈现不同结果。
继承和多态:通过继承实现多态,即子类对象可以替换父类对象并调用父类的方法。这样,在不改变原有代码的情况下,可以通过添加新的子类对象来扩展功能。
接口和多态:接口定义了一组方法的规范,不同的类可以实现同一个接口并提供自己的具体实现。通过接口,可以统一对不同的类对象进行操作,并调用相同的方法。
方法重载和多态:方法重载是指在一个类中定义多个同名但参数列表不同的方法。通过方法重载,可以根据传入的参数类型和个数的不同来选择调用不同的方法。
泛型和多态:泛型是一种参数化类型的机制,可以在定义类、接口和方法时使用类型参数。通过泛型,可以编写通用的代码,适用于不同类型的对象。
多态判断:在多态中,可以使用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.多态的运用
多态是面向对象编程中的重要概念,它允许通过不同的对象以统一的方式调用同一个方法或函数。
多态的运用主要体现:
-
继承和多态:通过继承实现多态,即子类对象可以替换父类对象并调用父类的方法。这样,在不改变原有代码的情况下,可以通过添加新的子类对象来扩展功能。
-
接口和多态:接口定义了一组方法的规范,不同的类可以实现同一个接口并提供自己的具体实现。通过接口,可以统一对不同的类对象进行操作,并调用相同的方法。
-
方法重载和多态:方法重载是指在一个类中定义多个同名但参数列表不同的方法。通过方法重载,可以根据传入的参数类型和个数的不同来选择调用不同的方法。
-
泛型和多态:泛型是一种参数化类型的机制,可以在定义类、接口和方法时使用类型参数。通过泛型,可以编写通用的代码,适用于不同类型的对象。
多态的运用主要用处:
可以提高代码的灵活性、可扩展性和复用性,降低代码的耦合度。
3.instanceof
instanceof是Java中的一个运算符,用于判断一个对象是否属于某个类或其子类的实例。
对象 instanceof 类名
对象是要进行判断的对象,类名是要判断的类或接口。
instanceof的运用主要包括以下几个方面:
-
多态判断:在多态中,可以使用instanceof来判断一个对象是否是某个父类的实例。通过这种方式,可以在运行时动态地确定对象的类型,并根据不同的类型执行不同的操作。
-
接口判断:除了类的判断,instanceof也可以用于判断一个对象是否实现了某个接口。可以通过instanceof来判断对象是否属于某个接口的实例,以便进行相应的操作。
使用instanceof可以在程序中根据对象的类型进行不同的处理逻辑,以提高代码的灵活性和可扩展性.
原文地址:https://blog.csdn.net/yyayyl_xzq/article/details/144161346
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!