1.多态
同一个行为具有多个不同表现形式或形态的能力
多态是面向对象编程中的一个重要概念,指的是同一种操作或方法具有多种不同的实现方式(形态)。多态性允许以统一的方式使用不同的对象,实现代码的灵活性和可复用性。
在多态中,父类的引用可以指向子类的对象,并调用子类中重写了父类方法的实现。这种行为称为动态绑定,它是多态性的核心机制之一。通过多态,我们可以根据具体的对象类型来决定调用哪个实现,而无需在编译时确定。
多态有助于编写更加灵活和可扩展的代码。它可以使代码更加模块化,减少了重复代码的编写,提高了代码的可维护性和可读性。同时,多态还支持接口的统一性,这意味着可以通过统一的接口调用不同的对象,简化了代码的设计和使用。
2.引用转型
在Java中,引用转型指的是将一个对象的引用由一个类型转换为另一个类型。在Java的面向对象编程中,可以将一个对象视为它所属的类的实例,但也可以将其视为它的超类或接口的实例。引用转型是在这种多态性下用于改变对象引用类型的机制。
在Java中,引用转型分为两种类型:向上转型和向下转型。
3.向上转型
向上转型是将子类的引用赋值给父类的引用,它是安全的隐式转换。换句话说,它是将一个具体的对象引用,转换为它所属的父类或接口的引用。
简单的来说就是类对象转换成父类对象,让父类的变量保存子类的对象,或者让父类的引用指向子类的对象。
//语法
父类类型 变量名 = new 子类类型();
3.1.示例
//接口
public interface animal {
public void eat();
public void show();
}
//dog类去实现animal接口并重写里面的方法
public class dog implements animal{
@Override
public void eat() {
System.out.println("吃骨头");
}
@Override
public void show() {
System.out.println("汪汪");
}
}
//cat类去实现animal并重写里面的方法
public class cat implements animal{
@Override
public void eat() {
System.out.println("吃🐟");
}
@Override
public void show() {
System.out.println("喵喵");
}
}
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请你输入的数字:");
int i = scanner.nextInt();
//提供一个初始值
animal animal = null;
switch (i){
case 1:
//向上转型 让父类的变量保存子类的对象
animal = new dog();
break;
case 2:
animal = new cat();
System.out.println();
break;
}
//调用方法
animal.eat();
animal.show();
}
}
4.向下转型
向下转型是将一个父类的引用转换为其子类的引用,它需要显式地进行类型转换。这是因为向下转型可能不安全,可能会导致ClassCastException异常。只有在确定将父类引用的实际对象是子类的实例时,向下转型才是安全的。
简单的来说就是父类对象转换成子类对象,让子类的变量保存父类的对象,或者让子类的引用指向父类的对象,需要强制转换:
//语法
子类类型 变量名 = (子类类型)父类类型;
5.instanceof
对象 instanceof 类1://用来判断对象的类型。
//如果对象的类型为类1则返回true,否则返回false。