JAVA基础-多态

Posted 不愿透露姓名的王建森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA基础-多态相关的知识,希望对你有一定的参考价值。

需要掌握的知识点

  1. 理解多态的概念
  2. 理解对象的类型转换(父子类之间)
  3. 熟练掌握instanceof关键字
  4. 理解父类作为方法形参实现的多态
  5. 理解父类作为返回值实现的多态

多态的向上转型

同一个引用类型,使用不同的实例而执行不同操作
父类类型 变量 = new 子类A构造器(形参);
父类类型 变量 = new 子类B构造器(形参);

下面是一个例子:父亲类型当做方法参数,父亲类型可以接受子类的类型

//打印机父类
public class Printer {

    String Name = "Father!!";

	public void print() {
		System.out.println("Print father!");
	}

}
//打印机黑白
public class BPrinter extends Printer{

    String Name = "BLACK!!";

	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("黑白纸张!!");
	}
}


//打印机彩色
public class CPrinter extends Printer{

    String Name = "BLACK!!";

	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("彩色纸张!!!");
	}
}

public class Master {

	//父亲类型当做方法参数!
	public void mprint(Printer p ) {
		p.print();
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
        //如果子类方法重写,调用的是子类的方法
		Master Jeason = new Master();
		BPrinter p1 = new BPrinter();
		CPrinter p2 = new CPrinter();
		Jeason.mprint(p1);
		Jeason.mprint(p2);

        //调用的父类成员变量
        Printer p = new BPrinter();
		System.out.println( p.name );
	}
}   

// 输出:
// 黑白纸张!!
// 彩色纸张!!!
// printer father!!

上面的这个过程叫做向上转型
总结一下:

  • 向上转型时,父类中与子类成员变量相同时,输出成员变量时调用的是父类的成员变量。
  • 向上转型时,优先调用子类中重写的方法。

多态的向下转型

向下转型就是父类转换成子类(强制转换)
前提是要先进行向上转型:

Printer p = new BPrinter();
BPrinter p3 = (BPrinter)p;

其中我们可以借用instanceof运算法先进性判断,随后进行强制转换





以上是关于JAVA基础-多态的主要内容,如果未能解决你的问题,请参考以下文章

Java基础十一--多态

Java基础(多态的理解与应用)

Java 基础 ------- 面向对象(四) 多态

学习大数据:Java基础篇之多态

学习大数据:Java基础篇之多态

Java基础知识回顾之三 ----- 封装继承和多态