当前位置: 首页 > 图灵资讯 > java面试题> java基础面试题-什么是Java中的多态性?

java基础面试题-什么是Java中的多态性?

来源:图灵教育
时间:2024-08-01 13:22:53

多态性,简单来说,就是同一个方法在不同的对象上表现出不同的行为。听起来有点抽象,我们可以把它分为两种情况来理解:方法重载和方法重写。

1. 方法重载(编译时多态性)

方法重载是指同一个类中有多个方法,它们的名字相同,但参数不同(参数的类型、数量或顺序不同)。当你调用这个方法时,Java会根据你传入的参数来决定执行哪个具体的方法。这就是编译时多态性,因为在编译时就能确定要调用哪个方法。

举个例子:

  • 你有一个类叫Calculator,里面有两个方法都叫add,一个是加两个整数,另一个是加两个浮点数。当你调用add(2, 3)时,Java会执行加整数的方法;当你调用add(2.5, 3.5)时,Java会执行加浮点数的方法。

2. 方法重写(运行时多态性)

方法重写是指子类重新定义父类中已有的方法。子类的方法和父类的方法名字、返回类型、参数都要相同。当你用父类的引用指向子类的对象,并调用这个方法时,实际执行的是子类的版本。这就是运行时多态性,因为要到运行时才能确定具体执行哪个方法。

举个例子:

  • 你有一个父类叫Animal,里面有一个方法叫makeSound。然后你有两个子类,一个叫Dog,重写了makeSound方法,输出“汪汪”;另一个叫Cat,重写了makeSound方法,输出“喵喵”。当你用Animal类型的引用指向Dog对象,并调用makeSound方法时,实际输出的是“汪汪”;当你用Animal类型的引用指向Cat对象,并调用makeSound方法时,实际输出的是“喵喵”。

总结

多态性是面向对象编程的一大特性,它使得同一个方法在不同的对象上可以表现出不同的行为,从而提高了程序的灵活性和可扩展性。通过方法重载和方法重写,我们可以在不同的场景下使用相同的方法名来实现不同的功能。