JAVA 基础-多态

一、概念

1.1 说说你对Java多态怎么理解

多态是指允许不同类的对象对同一消息作出响应。即同一个接口,使用不同的实例而执行不同操作。多态性可以分为编译时多态(重载)和运行时多态(重写)。它使得程序具有良好的灵活性和扩展性。

1.3 重载和重写

  • **重载(Overload)**‌:在同一个类中,定义相同的方法名,但参数不同(参数类型、个数、顺序可以不同)。重载是编译时的多态性,对返回类型没有要求。‌

方法重载是指在同一个类中可以定义多个方法,它们的名称相同但参数列表不同(包括参数个数、类型或顺序)。在编译时,Java编译器会根据传入的参数类型或数量来决定调用哪个方法

java 复制代码
class MathUtils {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}
  • ‌**重写(Override)**‌:子类重写父类的方法,方法名和参数列表必须相同,返回类型可以兼容。重写是运行时的多态性,访问修饰符的限制要大于被重写方法的修饰符。

方法重写是指子类可以重写父类的方法,实现不同的行为。当我们通过父类的引用来调用被重写的方法时,实际执行的是子类中的方法。这种特性是"运行时多态"的实现,Java通过动态绑定来实现这一点。

java 复制代码
class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("Cat meows");
    }
}

// 使用
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // 输出: Dog barks
myCat.sound(); // 输出: Cat meows

1.3 重载和重写的范围

  • 重载‌:发生在同一个类中,对方法的参数进行区分。
  • 重写‌:发生在子类与父类之间,子类重写父类的方法。

1.4 重载和重写的多态性

  • 重载‌:是编译时的多态性,根据传入参数的不同调用相应的方法。
  • 重写‌:是运行时的多态性,通过继承机制,子类可以提供父类方法的特定实现。

1.5 重载和重写的参数要求

  • 重载‌:参数的个数、类型、顺序可以不同。
  • 重写‌:参数必须完全相同。

1.6 重载和重写的访问修饰符要求

  • 重载‌:对访问修饰符没有特殊要求。
  • 重写‌:访问修饰符的限制要大于被重写方法的修饰符(public > protected > default > private)。

1.7 重载和重写的异常处理要求

  • 重载‌:可以抛出不同的异常。
  • 重写‌:不能抛出新的检查异常或者比被重写方法声明更加宽泛的检查型异常。
相关推荐
代码or搬砖29 分钟前
Java集合-Set讲解
java·开发语言
艾上编程30 分钟前
第三章——爬虫工具场景之Python爬虫实战:学术文献摘要爬取,助力科研高效进行
开发语言·爬虫·python
渣娃-小晴晴31 分钟前
java集合在并发环境下应用时的注意事项
java·后端
北极糊的狐31 分钟前
若依系统报错net::ERR_CONNECTION_TIMED_OUT的原因
java·windows·sql·mybatis
明洞日记37 分钟前
【数据结构手册008】STL容器完全参考指南
开发语言·数据结构·c++
jllllyuz1 小时前
matlab使用B样条进行曲线曲面拟合
开发语言·matlab
FLGB1 小时前
maven漏洞检测报告
java·maven
农夫山泉2号2 小时前
【c++】——c++编译的so中函数有额外的字符
java·服务器·c++
wangan0942 小时前
不带圆圈的二叉树
java·前端·javascript
ku_code_ku2 小时前
python bert_score使用本地模型的方法
开发语言·python·bert