多 态

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ikun8848

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值