Java序谈之多态知识

来源:互联网 发布:java培训一般多少钱 编辑:程序博客网 时间:2024/06/03 11:18

何谓多态?

多态是一种事物的不同表现形态

Java中多态实现的条件是什么?

1、类与类之间存在继承关系

2、子类和父类之间有重写方法

3、父类引用指向子类对象

多态在Java中的体现是什么?

一个父类或许有多个子类,其中都重写了父类的方法,之后父类引用即可直接执行子类复写的方法

多态有什么好处和弊端?

好处:1、基于继承,便于维护代码 2、增强代码的扩展性 3、父类不能调用子类的特殊方法

多态时候的成员变量和成员函数的区别?

成员变量:无论编译还是运行都看父类的变量

成员函数:编译看父类的成员方法,运行看子类的成员方法

代码示例:

public class Demo02多态变量方法调用 {public static void main(String[] args) {Father f = new Son();//用到这两个类,将他们加载进方法区System.out.println(f.num);f.speak();}}class Father{int num = 10;public void speak() {System.out.println("Father 说");}}class Son extends Father{int num = 20;public void speak() {System.out.println("Son说");}}
结果是:

10

Father说

多态实例使用代码,向上、向下转型

public static void fun(WuQi w) {w.hit();//判断传进来的参数属于哪个类的  instanceof 可以判断是哪个类的对象  w是否属于刀类if(w instanceof Dao) {Dao dao = (Dao)w;dao.lianDao();}else if (w instanceof Jian){Jian jian = (Jian)w; jian.lianJian();}}}class WuQi{public void hit() {System.out.println("挥舞武器");}}class Dao extends WuQi{public void hit() {System.out.println("挥刀");}public void lianDao() {System.out.println("练刀");}}class Jian extends WuQi{public void hit() {System.out.println("挥剑");}public void lianJian() {System.out.println("耍剑");}}

分析:

向上转型:WuQi  a = new Dao( );

向下转型:Dao b = ( Dao )a;

main函数中使用了instanceof关键字,判断new Dao()是否是Dao类的对象