当前位置 : 主页 > 编程语言 > java >

Java的多态中这段代码你是否真正理解

来源:互联网 收集:自由互联 发布时间:2022-10-26
Java的多态中这段代码你是否真正理解 java的三大特点是什么?封装、继承和多态。这是每个Java程序员张口就来的知识点。封装就是提供接口,真正的实现类无需客户端来进行感知,隐藏

Java的多态中这段代码你是否真正理解

java的三大特点是什么?封装、继承和多态。这是每个Java程序员张口就来的知识点。封装就是提供接口,真正的实现类无需客户端来进行感知,隐藏了具体的实现细节。继承就不用多说了,多态是通过类的继承来体现的。

多态

回忆一下你第一次接触类继承的时候,是否用的是形状类Shape和各种各样的图形长方形Triangle类、Square正方形类。这些具体的图形类继承Shape基类

Shape shape = new Square(); shape.draw();

这段代码的含义就不用多说了,创建方形的对象,然后调用方形的draw()方法进行描绘

但是你有没有想过为什么调用的方形的draw()方法而不是Shape的draw()方法呢?

这就涉及到了一个重要的概念,后期绑定。也就是在运行的时候,方法调用机制会根据对象的类型找到对应的方法体来执行,这也就是为什么会调用正方形类的draw()方法而不是基类Shape的draw()方法。值得注意的是,被final和static修饰的方法会有后期绑定的情况。

final关键字

final在我们平时使用的时候也很重要,它表示最终的,不能再改变的意思,它可以修饰成员变量、类和方法

一般final与static联合起来使用,用来定义一个不被改变的常量,static来保证只有这个一个变量。被final修饰后,对于基本类型来说,它的值不会被改变了;对于一个对象来说,它引用的对象不会被改变了,但对象本身可能会改变,这个final是无法阻止的。

对于final修饰方法的情况,这种很少见,因为它会影响运行效率。

被final修饰的类无法再进行继承,String类就是一个典型的final修饰的类。被final修饰的类,它的所有的方法都是final的,没有任何类可以覆盖它的方法

总结

这篇文章我们讲了Java中的一个重要的概念:多态。多态的出现让我们在实现具体方法的时候无需判断它是具体哪个子类,这是基于方法的后期绑定也就是动态绑定机制来实现的,然后介绍了一下final这个关键字,它通常与static结合使用定义常量,修饰类后类的方法不可被覆盖。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  • 欢迎关注我❤️,点赞
  • 上一篇:Java的接口和抽象类到底哪个更抽象
    下一篇:没有了
    网友评论