1.单词
instanceof 判断
2.什么是多态
多态:面向对象的三大特性之一。一种事物的多中表达形式,相同的方法,根据业务需求的不同产生不同的结果。
3.使用多态(多态的三要素)
要有继承关键的父类和子类
子类重写父类的方法
父类的引用指向子类的对象
3.向上转型和向下转型
实施步骤(向上转型)
1.创建父类
父类提供子类的各种实例方法
2.创建子类
重写父类的方法
3.创建实现类
创建有参方法,参数为父类类型,分局父类类型做判断,调用子类重写或者继承的方法
实施步骤(向下转型)
1.创建父类
父类提供子类的各种实例方法
2.创建子类
重写父类的方法
写入子类的特有方法
3.创建实现类
创建有参方法,参数为父类类型,分局父类类型做判断,调用子类重写或者继承的方法
强制转换父类对象为子类的类型
调用子类的特有方法
向上转:把子类转换为父类为向上转,系统会自动转换数据类型。通过父类引用变量调用子类的 重写或者继承方法,但是无法调用子类的特有方法。
向下转:可以调用子类的特有方法,但必须强制转换父类变量为子类真实的类型,否则转换异常ClassCostException
instanceof 用来判断当前面的对象是否和后面的类属于同一个类
面试题(部分)
1.多态存在的三个条件
继承关键的父类和子类
子类重写父类的方法
父类的引用指向子类的对象
2.多态成员的访问特点
A:成员变量
编译看左边,运行看左边。
B:构造方法
创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
C:成员方法
编译看左边,运行看右边。
D:静态方法
编译看左边,运行看左边
编译看左边:指的是看父类中有没有该成员,如果有说明编译不报错,可以进行访问。 运行看左边:指的是编译不报错的前提下,去访问父类中的成员。
由于成员方法存在方法重写,所以它运行看右边。
3.多态的使用场景
继承和多态:子类可以重写父类的方法,当调用该方法时,程序会根据实际的对象类型来确定调用哪个版本的方法,实现了代码的灵活性和扩展性。
接口多态:一个接口可以被多个类实现,这些类可以实现同一个接口方法,但方法体内容不同,当需要调用这个方法时,程序会根据对象的实际类型来选择正确的实现方法。
多态的使用可以使代码更灵活、更具扩展性,提高了代码的复用性和可维护性。
4.多态的作用
1.提高代码的复用性:通过多态实现的代码可以在不同的场景下使用,降低了代码重复编写的工作量,提高了代码的复用性。
2.实现代码的灵活性和扩展性:通过子类对父类进行继承和重写的方式,实现了代码的灵活性和扩展性,当需要新增功能或修改功能时,只需要在子类中进行相应的修改即可,而不需要修改父类的代码。
3.降低代码出错率:通过多态实现的代码可以提高代码的可维护性,并减少代码维护的成本,降低代码的出错率。
4.实现接口规范和标准化:通过多态定义纯虚函数接口规范和标准化,同时要求其实现者基本遵守特定实现方式,提高代码可读性和团队开发效率
多态作为一种重要的面向对象编程特性,可以为程序员提供更灵活、更扩展和更可维护的代码实现方式,因此,在面向对象编程的过程中,多态得到了广泛的应用
5.多态的弊端
1.性能问题:在使用多态时需要使用虚函数表来实现动态绑定,这会导致一定的性能损失。特别是在大型系统中使用多态时,可能会影响程序的性能。
2.可读性和可维护性问题:多态增加了代码的复杂度,增加了代码的阅读和理解的难度,特别是在继承和多层继承的情况下,子类的行为可能不容易理解,降低代码的可读性和可维护性。
3.调试问题:多态可能会增加程序的调试难度,由于多态的动态绑定机制,程序进行调试时可能会遇到不同的版本的函数,增加了调试的难度。
4.安全问题:多态可能会导致安全问题,如果子类重写了父类的方法,而子类的实现有缺陷或存在漏洞,可能会导致程序的安全问题。