ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java学习-------多态

2021-03-01 23:01:26  阅读:167  来源: 互联网

标签:cut Java void 多态 public ------- Person YQQ class


1.多态的意义:
1)同一类型的引用指向不同的对象时
----行为多态

public static void main(String[] args){
	Person i = new Person();
	Person o = new barber();
	Person p = new doctor();
	o.cut();//理发师的剪头发行为
	p.cut();//演员的演戏行为
}
abstract class Person{
	abstract void cut();
}
class barber extends Person{
	public void cut(){
	System.out.println("剪头发");
}
}
class doctor extends Person{
	public void cut(){
	System.out.println("手术刀裁剪");
	}
}
/**
在超类中有个抽象cut方法,可以理解为人的cut行为,在不同职业中cut的意思也不
同,在理发师中,cut作为动词是剪头发的动作,在医生职业cut就是由手术刀或者其
他进行手术,他们的施法者都是人,也就是超类,是同一类型,对象不同。*/

2)同一对象被造型为不同类型时,有不同功能
----对象的多态

public static void main(String[] args){
		water w = new water();
		liquidWater o = w;
		solidWater p = w;
		o.effect();
		p.function();
	}
}
interface solidWater{
	void function();
}
abstract class liquidWater{
	abstract void effect();
}
class water extends liquidWater implements solidWater{
	public void effect(){
		System.out.println("液态水可以喝");
	}
	public void function(){
		System.out.println("固态水是冰块,作用很多");
	}
/**水可以作为一个对象,但他可以有多种形态,分别被造型为液态水和固态水,那么他们的引用o,p就可以点出他们的方法,也就是作用。*/

抽象方法都是多态,Java中凡是对象都是多态的
3)向上造型
3.1)超类型的引用指向派生类对象
3.2)能造型成为的类型有:超类+所实现的接口
3.3)能点出来什么,看引用类型
4)强制类型转换,成功的条件只有如下两种:
4.1)引用所指向的对象就是该类型
4.2)引用所指向的对象,实现了该接口或者继承的类
5)强转时若不符合如上两个条件,则会发生ClassCastExcption类型转换异常
6)在进行类型转换之前“instanceof”操作符可以检测是否成功的转换

public class MutilTypeDemo {

	public static void main(String[] args) {
	TQQ o = new YQQ();
	YQQ o1 = (YQQ)o;//o所指向的对象就是YQQ类型
	Inter1 o2 = (Inter1)o;//o所指向的对象YQQ是实现Inter1的接口
	//UQQ o3 = (UQQ)o;//ClassCastException
	System.out.println(o instanceof YQQ);//true
	if(o instanceof UQQ) {
		UQQ o3 = (UQQ)o;
	}else {
		System.out.println("没有转换成功");
	}
	}

}
interface Inter1{}
class TQQ{}
class YQQ extends TQQ implements Inter1{}
class UQQ extends TQQ{}

强转一定是和instanceof一起!

标签:cut,Java,void,多态,public,-------,Person,YQQ,class
来源: https://blog.csdn.net/qq_50728916/article/details/114272661

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有