码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础-多态

时间:2020-07-03 21:20:37      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:main   rgs   sys   out   方法重写   instance   总结   Stub   返回值   

需要掌握的知识点

  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基础-多态

标签:main   rgs   sys   out   方法重写   instance   总结   Stub   返回值   

原文地址:https://www.cnblogs.com/JeasonIsCoding/p/13232487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!