java-拆箱和装箱

本文探讨了Java中的拆箱(从父类引用到子类引用)和装箱(子类对象转为父类对象)概念,以及instanceof关键字的应用,通过实例说明了它们在多态中的作用。涉及学生、好学生类和接口的案例展示了向下转型和类型判断的过程。
摘要由CSDN通过智能技术生成

拆箱

就是父类的引用转化为子类的引用。也就是父类的对象名转为子类的对象名,我不确定这个过程会不会开辟空间。
这个过程有可能出现问题,因为子类可能有自己的方法或属性,父类没有,那么就可能出现类型转化异常。

装箱

子类对象转化为父类的对象,这个过程绝对安全,因为子类继承父类,那么就有父类的属性和方法。

instanceof

obj instanceof class
obj为某个类的对象。
class为类名。
结果返回为一个boolean值,如果时该类的对象为true,否者就是false.

通常instanceof使用在向下转型即拆箱的过程中。这个和多态联系的比较紧密。

有个学生类;有个好学生类继承学生类,并且实现俩个接口。

学生类

public class Student {
	private String name ;
	private int age ;
	
	
	public void learn() {
		System.out.println("我在学习。。。");
	}
}

好学生类

public class BestStudent extends Student implements Music,Sport{
	public void sing() {
		System.out.println("三好学生在唱歌");
	}
	public void flute() {//吹笛子
		System.out.println("三好学生在吹笛子");
	}
	
	public void playBaskball() {
		System.out.println("三好学生在打篮球");
	}
	public void run() {
		System.out.println("三好学生在跑步");
	}
}

接口

public interface Sport {
	void playBaskball();
	void run();
}
public interface Music {
	void sing();
	void flute();//吹笛子
}

main方法

public class Demo {

	public static void main(String[] args) {
		Student student = new BestStudent(); //多态
		
		student.learn(); //调用父类里面的方法
		BestStudent goodStudent = (BestStudent)student; //向下拆箱 , 子类名  对象名 = (子类名)父类对象名
		if( student instanceof BestStudent) { //判断对象的类型,然后调用子类的方法
			goodStudent.playBaskball();
			goodStudent.run();
			goodStudent.flute();
			goodStudent.sing();
		}
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值