首页 > 编程语言 >面试题1:Java的多态深入聊一聊

面试题1:Java的多态深入聊一聊

时间:2023-10-08 22:11:20浏览次数:36  
标签:面试题 子类 多态 makeSound 聊一聊 Animal 父类 方法

多态是面向对象编程中的一个重要概念,它允许不同的对象通过相同的接口来执行不同的操作。在Java中,多态性主要通过以下两种方式实现:

  1. 方法重载(Overloading): 这是编译时多态,它允许一个类中有多个同名方法,但它们的参数列表不同。编译器会根据方法的参数列表选择正确的方法。例如:
    class Calculator {
        int add(int a, int b) {
            return a + b;
        }
    
        double add(double a, double b) {
            return a + b;
        }
    }

    在上面的示例中,Calculator 类中有两个名为 add 的方法,一个接受整数参数,另一个接受双精度浮点数参数。编译器会根据方法参数的类型选择正确的方法。

    1. 方法重写(Overriding): 这是运行时多态,它允许子类覆盖父类的方法,从而在运行时调用子类的方法而不是父类的方法。为了实现方法重写,子类必须使用@Override注解来覆盖父类方法,并且方法签名(方法的名称、返回类型、参数列表)必须与父类方法相同。例如:
      class Animal {
          void makeSound() {
              System.out.println("Animal makes a sound");
          }
      }
      
      class Dog extends Animal {
          @Override
          void makeSound() {
              System.out.println("Dog barks");
          }
      }

      在上面的示例中,Dog 类重写了 Animal 类的 makeSound 方法。当调用makeSound方法时,具体执行哪个版本(父类的还是子类的)取决于实际对象的类型。

      多态性的优点之一是它使代码更加灵活和可扩展。通过使用多态性,可以编写更通用、可维护和可扩展的代码,因为它允许在不改变现有代码的情况下添加新的子类和实现不同的行为。这是面向对象编程的一个关键概念,有助于提高代码的可重用性和可维护性。

标签:面试题,子类,多态,makeSound,聊一聊,Animal,父类,方法
From: https://www.cnblogs.com/dk1024/p/17750310.html

相关文章

  • 嵌入式面试题
    @目录前言C语言关键字volatilestatic作用于变量声明局部变量声明外部变量作用于函数const用于变量用于指针用于函数sizeof位域字节对齐(#pragmapack)结构体成员数组大小为0函数memsetmemcpy变量变量定义写法字节长度(32位系统)编译预编译如何避免头文件被重复包含#与##的作用内存程序......
  • MySQL专题面试题-二叉树、红黑树、B 树、B+树
    演示网址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html所谓的索引,就是帮助MySQL高效获取数据的排好序的数据结构,基本都是按照k-v形式存储。1.二叉树 二叉树的每个节点至多只有2个叶子节点,且左边的叶子节点键值比根节点小,右边的叶子节点键值比根节点大。这......
  • 企业场景面试题
    面试时,在询问一些技术场景问题的时候,通常以如下的问题。这些是每一个项目都需要面对的问题,能够回答这些问题才能够说明有过实际的开发经验,同时从回答种也可以看出我们的真实实力水平......
  • 常见面试题3
    三接口和抽象类有什么共同点和区别?共同点:•都不能被实例化。•都可以包含抽象方法。•都可以有默认实现的方法(Java8可以用default关键字在接口中定义默认方法)。区别:•接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用......
  • 常见面试题2
    二什么是多态多态,顾名思义,表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。`多态的特点:•对象类型和引用类型之间具有继承(类)/实现(接口)的关系;•引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;•多态不能调用“只在子类存......
  • 常见面试题5
    六char和varchar的区别是什么?1.char类型的长度是固定的,varchar的长度是可变的。这就表示,存储字符串'abc',使用char(10),表示存储的字符将占10个字节(包括7个空字符)使用varchar(10),则表示只占3个字节,10是最大值,当存储的字符小于10时,按照实际的长度存储。2.char类型的效率比varch......
  • 常见面试题4
    四为什么重写equals()时必须重写hashCode()方法?因为两个相等的对象的hashCode值必须是相等。也就是说如果equals方法判断两个对象是相等的,那这两个对象的hashCode值也要相等。如果重写equals()时没有重写hashCode()方法的话就可能会导致equals方法判断是相等的......
  • 常见面试题7
     cookie和session的区别?1.存储位置不同cookie的数据信息存放在客户端浏览器上。session的数据信息存放在服务器上。2.存储容量不同单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的......
  • 常见面试题6
    Java集合框架Java容器分为Collection和Map两大类,Collection集合的子接口有Set、List、Queue三种子接口。我们比较常用的是Set、List,Map接口不是collection的子接口。Collection集合主要有List和Set两大接口•List:一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以......
  • 面向对象的三个基本特征:封装、继承、多态
    封装在面向对象编程中,封装是一种将数据和相关操作封装在一个单元内部的概念。它通过将数据和方法组合在一个类中,隐藏了内部实现的细节,只暴露了必要的接口给外部使用。封装的目的是保护数据的完整性和安全性,同时提供一个清晰的接口供其他对象进行交互。通过封装,我们可以实现数据......