java中多态概念、实现原理详解中多态概念、实现原理详解
JAVA中多态性是对象多种表现形式的体现。在面向对象中,最常见的多态发生在使用父类的引用来引用子类的对
象。下面这篇文章主要给大家介绍一下,需要的朋友可以参考下
一一.什么是多态?什么是多态?
1.多态的定义多态的定义
指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函
数调用)
2.多态的作用多态的作用
消除类型之间的耦合关系
3.多态的说明多态的说明
近代网络小说泛滥,我们可以用它来举一个例子
某日你看见你手机上有多部小说同时更新了,比如有大主宰,雪鹰领主,龙王传说…在这里我们可以描述成如下:
小说a=大主宰
小说b=雪鹰领主
小说c=龙王传说
…
这里所表现的就是多态,大主宰,雪鹰领主,龙王传说都是小说的子类,我们仅仅可以通过小说这个父类就能够引用不同的子类,这
就是多态–我们只有在运行的时候才会知道引用变量所指向的具体实例对象
当然,这样的理解是是远远不够的,要对多态的理解入门就必须要明白是”向上转型”
在上面的例子中,小说(XS)是父类,大主宰(DZZ),雪鹰领主(XYLZ),龙王传说(LWCS)都是其子类 于是,我们定义如下代码
DZZ a=new DZZ();
对于这段代码应该都不会感觉到陌生,无非就是实例化了一个大主宰的对象 那么对于如下的这段代码呢?
XS a=new DZZ();
在这里我们这样理解,这里定义了一个XS类型的a,让它指向了DZZ对象实例对象实例。由于DZZ是继承于XS,所以DZZ可以自动向上转型
为XS,所以a可以指向DZZ实例对象的。这样做存在一个非常大的好处,在继承中我们知道子类是父类的扩展,它可以提供比父类
更加强大的功能,如果我们定义了一个指向子类的父类引用类型,那么它除了能够引用父类的共性外,还可以使用子类强大的功能
但是向上转型也存在一些缺憾,那就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们。所以父类类型的运用
可以调用父类中定义的所有属性和方法,对于只存在与子类中的方法和属性它就望尘莫及了
public class XS {
public void fun1() {
System.out.println("XS中的fun1");
fun2();
}
public void fun2() {
System.out.println("XS中的fun2");
}
}
public class DZZ extends XS{
/*
* 子类重载父类方法
* 父类中不存在该方法,向上转型后,父类是不能引用该方法的
*/
public void fun1(String a) {
System.out.println("DZZ中的fun1");
fun2();
}