Java基础面向对象三个特征:多态
Posted jcl226
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础面向对象三个特征:多态相关的知识,希望对你有一定的参考价值。
一、多态的概述
多态:一个对象拥有多种形态
eg:小明是一个学生(学生形态),同时也是一个人(人类形态)
多态的格式与使用:父类引用指向子类对象
格式:父类名称 对象名 = new 子类名称()
接口名称 接口名 = new 实现类名称()
多态中访问成员变量、成员方法:
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理
public class Demo01test { public static void main(String[] args) { //格式:父类引用指向子类对象 Animal cat = new Cat(); System.out.println(cat.num); //访问成员方法 cat.eat();//父子都有,优先用子 cat.run();//子类没有,父类有,向上找到父类 //无法调用子类特有的方法 // 编译看左边,左边是父类,父类没有这个方法,所有编译报错 //cat.catchMouse();错误写法!!! } }
二、向上、向下转型
向上转型:
格式(与多态的写法一致): 父类名称 对象名 = new 子类名称()
含义:右边创建一个子类对象,但把它当做父类对象来看待使用;
注意事项:向上转型一定是安全的(子类转向父类,子类小范围转向父类大范围)
向下转型:
格式:子类名称 对象名 = (子类名称) 父类对象
含义:将父类对象,转向本来的子类对象
三、instanceof关键字
通过此关键字,可以判断父类引用的对象本来属于哪个子类。
public class Demo02Test { public static void main(String[] args) { Animal animal = new Dog(); judge(animal); } public static void judge(Animal animal){ if (animal instanceof Cat){ Cat cat = (Cat) animal; cat.catchMouse(); } if(animal instanceof Dog){ Dog dog = (Dog) animal; dog.breakHome(); } }
以上是关于Java基础面向对象三个特征:多态的主要内容,如果未能解决你的问题,请参考以下文章