多态性

在面试时,如果问基础的话,基本上都会涉及重载、覆盖、多态这三个概念。前两个比较容易理解,多态还是需要费点劲的。
多态,有两种理解方式:不同的函数可以用相同的一个函数名,也就是重载的概念。
另一种是同一对象根据不同的消息执行相应的行为,也可以这样认为发送消息给某一个对象,让对象自行选择哪种相应的行为。
根据上述两种方式,所以多态可以分为静态多态性和动态多态性。
静态多态性指的是程序在编译时,系统就能决定调用哪个函数,如重载。
动态多态性指在运行中才能动态确定操作指针所指的对象,主要通过虚函数和重写来实现。
java 的多态机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法
概念理解起来有点抽象。还是看个例子吧。
静态多态性:
add(int a);
add(int a,int b);
add(double a);
add(double a,double b);

动态多态性
public class A{ }

public class AB extends A{ }

public class AC extends A{ }

public class test{
go(A a);
}

这个方法接收的是基类参数,当子类传给该方法时,执行的是相应子类的方法。如可以如此调用 go(new AB() );go(new AC() )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值