Java重载VS重写-向下转型VS向上转型-动态绑定VS静态绑定

本文详细介绍了Java中的多态性,包括重载和重写的概念。重载要求方法名相同但参数列表不同,而重写则需要方法名、参数列表和返回值相同。同时,文章探讨了向上转型和向下转型的区别,前者允许父类引用指向子类对象,后者则可能带来安全隐患。此外,动态绑定和静态绑定的概念也被提及,动态绑定是多态的基础,它在运行时决定调用哪个重写的方法,而静态绑定在编译时就已经确定了重载方法的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重载VS重写

重载:

  1. 方法名相同
  2. 参数列表不同(无论是参数的类型,数量还是顺序)
  3. 对方法的返回值不做要求

重写:
1:方法名相同
2:参数列表相同(参数类型,数量,顺序)
3:返回值相同(协变类型[返回值之间有继承关系])

向下转型VS向上转型

定义一个类:People
定义一个类:Student
Student继承People

class People{
    private int age;
    private String name;
    public void printMessage(){
        System.out.println("People的printMessage方法");
    }
}

class Student extends People{
    public void printMessage(){
        System.out.println("Student的printMessage方法");
    }
      public void studentMethod(){
        System.out.println("Student特有的方法");
    }
}

向上转型:
父类的引用指向子类的对象。
在这里插入图片描述

向下转型:

子类的引用指向父类的对象,但是向下转型并不安全,因为它无法判断,转型的类和被转型的类的继承关系。可以使用instanceof提前判断。
在这里插入图片描述

动态绑定VS静态绑定:

动态绑定(运行时绑定):
动态绑定为多态的基础,当父类的引用指向子类对象后,调用子类被重写的方法,则会执行子类重写后的方法。
为什么称为动态绑定,因为在编译后,字节码文件中,调用的仍然是父类的方法,直到运行时才会执行子类的重写的方法。

静态绑定(编译时绑定):
因为重载的方法在编译后即使方法名相同,但对应的方法签名有区别,编译器在编译时就已经确定使用哪一个重载的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值