什么是java的多态_java中的多态怎么理解

本文详细介绍了Java中的多态性概念,包括编译时多态和运行时多态。通过方法重载和方法重写实现了多态性,并通过一个运行时多态的例子展示了如何使用父类引用调用子类方法,实现不同子类型对象对同一消息的不同响应。多态的实现关键在于继承、重写和父类引用指向子类对象。
摘要由CSDN通过智能技术生成

30f3f7e27237f9060fffaa9e63a66459.png

多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。

如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。

方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。

运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:方法重写(子类继承父类并重写父类中已有的或抽象的方法);

对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。java中的引用变量有两个类型:一个编译时类型,一个是运行时类型。编译时类型由声明该变量使用的类型决定,运行时类型由实际赋给

该变量的对象决定。如果编译时类型与运行时类型不一致,就可能出现所谓的多态。——疯狂java讲义

运行时多态的使用例子如下:public class PolyTest5

{

public void run(Car car)//这样利用公共的父类就屏蔽了子类之间的差异性,可以应对所有的车.

{

car.run();//只要子类继承了car都可以作为参数传入方法中.如果没有多态,就要有对应每个类的方法.非常的麻烦.

}

public static void main(String[] args)

{

PolyTest5 test = new PolyTest5();

Car car = new BMW();

test.run(car);

QQ qq = new QQ();

test.run(qq);//向上类型转换.

}

}

class Car

{

public void run()

{

System.out.println("car is running");

}

}

class BMW extends Car

{

public void run()

{

System.out.println("BMW is running");

}

}

class QQ extends Car

{

public void run()

{

System.out.println("QQ is running");

}

}

多态的三要素:1.继承 2.重写 3.父类引用指向子类对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值