封装、继承、多态
当你把欢乐带给别人,你会收获更多欢乐。你应该认真思考自己能给他人带来什么样的幸福。
——埃莉诺·罗斯福
面向对象的三个基本特征是:封装、继承、多态
1.封装
封装是指将对象的状态(属性)和行为(方法)包装在一起,并对外界隐藏对象的内部实现细节,限制外部对对象的直接访问,只提供必要的接口(方法)与外界交互
2.继承
继承是一种类与类之间的关系,指的是一个类(子类)可以从另一个类(父类)继承属性和方法,子类可以复用父类的代码,同时还可以扩展和修改父类的功能
3.多态性
编译时多态(方法重载):同一个方法可以根据参数的不同而表现出不同的行为(方法的重载)。
运行时多态(方法重写):通过继承和方法重写,父类的引用可以指向子类的对象,不同的对象表现出不同的行为(方法的重写)。
多态体现在哪几个方面?
-
方法重载:
方法重载是指同一类中可以有多个同名方法,它们具有不同的参数列表(参数类型、数量或顺序不同)。虽然方法名相同,但根据传入的参数不同,编译器会在编译时确定调用哪个方法。。示例:对于一个 add 方法,可以定义为
add(int a,int b)和add(double a,doubleb) -
方法重写:
方法重写是指子类能够提供对父类中同名方法的具体实现。在运行时,JVM会根据对象的实际类型确定调用哪个版本的方法。这是实现多态的主要方式。
示例:在一个动物类中,定义一个
sound方法,子类Dog可以重写该方法以实现bark,而cat可以实现meow。 -
接口与实现:
多态也体现在接口的使用上,多个类可以实现同一个接口,并且用接口类型的引用来调用这些类的方法。这使得程序在面对不同具体实现时保持一贯的调用方式。
示例:多个类(如 Dog,cat)都实现了一个 Animal 接口,当用 Animal 类型的引用来调用makeSound 方法时,会触发对应的实现。
-
向上转型和向下转型:
在Java中,可以使用父类类型的引用指向子类对象,这是向上转型。通过这种方式,可以在运行时期采用不同的子类实现。
向下转型是将父类引用转回其子类类型,但在执行前需要确认引用实际指向的对象类型以避免
ClassCastException。
多态解决了什么问题?
多态是指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。多态这种特性也需要编程语言提供特殊的语法机制来实现,比如继承、接口类。
多态可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础。比如策略模式、基于接口而非实现编程、依赖倒置原则、里式替换原则、利用多态去掉冗长的 if-else 语句等等

浙公网安备 33010602011771号