向上转型和向下转型

向上转型:子类向上转型为父类

注意点:转型后父类与子类的同名函数中,子类的函数可以覆盖父类的函数,但子类自己定义的函数将被隐藏

class A{	
public void A1(){	
   	 System.out.println("父类方法1");	
	}
public void A2()	{	
   	System.out.println("父类方法2");	
	}
}

class B extends A{	
	public void A1()	{	
		System.out.println("子类方法1");	
	}	
	public void B2()	{	
		System.out.println("子类方法2");
 	}
}

public class C{
	 public static void main(String args[]){		
	A a=new B();	//upcast	
	}
}
向下转型:父类被强制转型为子类,成功转型后可以成为子类的一个对象
注意点:
转型之前要进行类型检验,对于类型不同的不能进行转型。
这是因为a1指向一个子类B的对象,所以子类B的实例对象b1当然也可以指向a1。而a2是一个父类对象,子类对象b2不能指向父类对象a2。
 A a1 = new B(); // 向上转型 

            a1.aMthod();    // 调用父类aMthod(),a1遗失B类方法bMethod1()、bMethod2() 

            B b1 = (B) a1; // 向下转型,编译无错误,运行时无错误 

            b1.aMthod();    // 调用父类A方法 

            b1.bMethod1(); // 调用B类方法 

            b1.bMethod2(); // 调用B类方法 

            A a2 = new A(); 

            B b2 = (B) a2; // 向下转型,编译无错误,运行时将出错 

            b2.aMthod(); 

            b2.bMethod1(); 

            b2.bMethod2(); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值