首页 > 编程语言 > 详细

一起学Java(二十)-----强制类型转换(对象)

时间:2019-12-04 00:33:26      阅读:100      评论:0      收藏:0      [点我收藏+]

不积跬步,无以至千里;不积小流,无以成江海。

 

Java语言基础

 

Java对象的强制类型转换

在java中强制类型转换分为基本数据类型和引用数据类型两种,这里讨论引用数据类型。

在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制。

构建 Son 和 Father 两个类

class Father{
	
	public void eat(){
		System.out.println("father is eating!");
	}
	
	public void sleep(){
		System.out.println("father is sleeping!");
	}
	
}

class Son extends Father{
	
	public void sleep(){
		System.out.println("son is sleeping!");
	}
	
	public void play(){
		System.out.println("son is playing!");
	}
}

  

首先构造一个Son对象,然后用一个Father类型变量引用它:

Father father = new Son();

在这里Son 对象实例被向上转型为father了,但是请注意这个Son对象实例在内存中的本质还是Son类型的,只不过它的能力临时被消弱了而已,现在我们将其对象类型还原!

Son son = (Son) father;  

其实father引用仍然是Father类型的,只不过是将它的能力加强了,将其加强后转交给son引用了,Son对象实例在son的变量的引用下,恢复真身,可以使用全部功能了。

看一下整体效果:

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Father father = new Son();
		father.sleep();
		father.eat();
		System.out.println(" ");
		Father f = new Son();
		Son son = (Son) f;
		son.eat();
		son.sleep();
		son.play();
	}

}

程序输出:

son is sleeping!
father is eating!
 
father is eating!
son is sleeping!
son is playing!

  

 

博客借鉴:https://blog.csdn.net/qq_40691051/article/details/89430309

一起学Java(二十)-----强制类型转换(对象)

原文:https://www.cnblogs.com/smilexuezi/p/11980228.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!