【Java基础】多态
一、什么是多态
——多态是面向对象三大特征最核心的步骤,从某种意义上可以认为,封装和继承就是为多态准备的。
概念:允许不同类的对象对同一消息作出不同响应。在Java语言中,接口的多种不同的实现方式即为多态。
二、多态的分类
1.编译时多态(设计时多态):编译器在编译状态,就能对不同行为进行区分,通常用方法重载来实现。
2.运行时多态:直到Java程序运行时,系统才能够根据实例方法的类型动态决定调用哪个方法。Java通常指的就是运行时多态。
三、多态(运行时多态)
1.实现多态的条件:
a.满足继承关系;(继承也可替换为实现接口)
b.方法重写;
c.父类引用指向子类对象。(向上转型)(接口引用指向实现类)
&&小知识点
1.向上转型(隐式转型、自动转型):父类引用指向子类对象;(孩子往父亲方向转型,所以向上)
[code]Father one = new Son();
意义:可以调用:
a.子类重写父类的方法;
b.父类自己派生下来的可以被子类直接使用的方法;
c.无法调用子类独有的方法。
2.向下转型(强制类型转换):子类引用指向父类对象,此处必须进行强转;
意义:可以调用:子类特有的方法。
条件:必须满足转型条件才能强转。instanceof 运算符用来判断左边对象是否为右边类型的实例,或者是否具有右边的特征;
用法:
2.多态的具体代码实现:
&&小知识点:如果父类和子类有一个完全相同的静态方法,是不构成重写关系的。所以向上转型之后,只能
调用到父类原有的静态方法,想调用子类自己的需要向下转型。
四、抽象类
1.产生背景
[code]Animal animal = new Animal("dog"); animal.eat();
语法没有问题,但是实例化animal没有意义。Java使用抽象类(abstract),限制实例化,避免写无意义代码。
2.应用场景:某个父类只知道子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
3.使用方法:抽象类不允许实例化,可以通过向上转型实现,指向子类实例。
4.注意:子类必须重写抽象方法,当没有重写时,子类也是抽象类。
5.static,final,private不能和abstract并存。
五、接口
1.产生背景:
a.Java只支持单继承
b.解决一个类型中需要兼容多种类型特征的问题;
c.多个不同类型具有相同特征的问题。
2.特点
(1)访问修饰符默认public(不写也是public);
(2)当类实现接口时,需要实现接口中所有方法,否则需要设置该类为抽象类;
(3)接口中定义int a = 10;默认为public static final;
(4)jdk1.8新增的特性:
a.default有方法体,实现类可以不重写调用;
b.static有方法体,接口名.super.方法
(5)一个接口可以继承多个接口是继承
- java基础学习面向对象之多态 五-10
- Java基础:继承和多态
- 黑马程序员—5—Java基础:多态学习笔记和学习心得体会
- java基础之多态,内部类,匿名内部类
- JAVA基础(八)面向对象3 多态、抽象类、接口
- java 基础-域的访问无多态
- [JAVA基础汇总]第十一章 继承和多态
- 黑马程序员_java基础3-面向对象(二)多态、异常、包
- java基础 继承、封装、多态、抽象详解
- java基础学习(七)多态
- IT十八掌作业_java基础第六天_接口与适配器模式、多态、内部类
- java基础案例:多态
- 【Java学习笔记】基础知识学习10【继承与多态】
- Java基础班第九天(上)多态
- 笔记整理(java基础五-------面向对象--多态)
- Java基础:多态(重载和重写)
- Java基础---多态
- Java基础中的多态理解
- JAVA基础学习之多态抽象与接口
- java基础之多态