栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 面向对象的多态性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 面向对象的多态性

        定义一个抽象类,然后定义两个具体的子类,用两个子类的实例化对象当作参数传入po方法内部

        po方法的参数是父类参数,这样就可以接收不同子类的参数了,这就多态的性质。

        调用的时候可能会需要调用到父类中没有定义的抽象方法,所以就需要转换类型,用父类的转换成子类的。

        但是转换的时候又有可能传进来的对象不是我们要装换的类的,比如我们需要转换mun类但是传进来的对象却是func的,这样就会报错,所以我们需要用 instanceof关键字来进行判断传进来的对象是不是mun类的,如果是那么就转换并调用

 

public class isdj {
	public static void main(String[]args) {
		func k = new func("bbor");			//实例化具体类
		mun p = new mun ("bgrl");
		
		po(k);				//为po方法传参
		po(p);
		
	
	}
	public static void po(foo c) {		//用父类参数来接收参数,这样可以接收不同子类的参数,这就是多态
		c.ko();								//用参数名调用子类方法
		
			//调用父类foo中不存在的而子类中又有的方法,需要类型转换
		if(c instanceof mun) {			//判断传进来的是不是mun类的东西
			mun p = (mun)c;				//如果是的话就转变类型
			p.dd();						//调用 p 对象中的dd方法
		}
		
		
	}

}

abstract class foo{		//定义一个抽象类用来被继承
	String name;
	public foo() {}
	public foo(String name) {
		this.name=name;
	}
	public abstract void ko();
}

class func extends foo{			//定义一个具体类来继承抽象类
	public func(String name) {
		super(name);
	}
	public void ko() {
		System.out.println("我是狗币"+name);
	}
}
class mun extends foo{			//定义一个具体类来继承抽象类
	public mun(String name) {
		super(name);
	}
	public void ko() {
		System.out.println("我才是狗币"+name);
	}
	public void dd() {
		System.out.println("我才是"+name);
	}
}

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号