- 多态基本介绍
方法或对象具有多种形态。是面向对象的三大特征,多态是建立在封装和继承的基础之上的- 多态的具体体现
1.一个对象的编译类型和运行类型可以不一致
2.编译类型定义对象时,就确定了,不能改变
3.运行类型是可以变化的
4.编译类型看定义时=号的左边,运行时类型看=号的右边
Animal animal=new Dog();animal编译类型是Animal 运行类型是Dog
animal =new Cat();animal的运行类型变成了Cat,编译类型任然是Anlmal
- 多态注意事项和细节讨论
多态的前提是:两个对象存在继承关系
多态的向上转型
1.本质:父类的引用指向了子类的对象
2.语法 父类类型 引用名=new 子类类型();
3.特点:编译类型开左边,运行类型看右边,可以调用父类中的所有成员
不能调用子类中特有成员- 多态注意事项和细节讨论
1.语法:子类类型 引用名=new 父类类型
2.只能强转父类的引用,不能强转父类的对象
3.要求父类的引用必须指向的是当前目标类型的对象
4.可以调用子类类型中的所有成员
5.属性没有重写之说!属性的值看编译类型PolyDetailed02
6.instanceof比较符,用于判断对象的类型是否为XX类型或XX类型的子类PolyDetail03
package com.java.poly_.detail_; public class PolyDetail03 { public static void main(String[] args) { BB bb = new BB(); System.out.println(bb instanceof BB);//true System.out.println(bb instanceof AA);//true AA aa=new BB(); System.out.println(aa instanceof AA); System.out.println(aa instanceof BB); Object obj=new Object(); System.out.println(obj instanceof AA); } } class AA{} class BB extends AA{}