java上转型与下转型_java的向上转型与向下转型

刚开始接触java转型,虽然现在还不知道为什么要转型,但是先强记下语法吧

向上转型:

首先要有一个父类,一个子类,

Person p=new Person();

p=new Student();

OK,这就是向上转型,可以简化成:Person p=new Student();

1)   p是Person的引用,指向Student的对象,p不是对象;

2)   p只能调用父类中有的成员变量与成员函数,子类中新有的方法与变量p不能使用,而执行的主体是子类的主体。

例如 class Person{

void eat(){system .out.println("eating...")}

void sleep(){system.out.println("sleep...")}

}

class Student extends Person{

void eat(){system.out.println("I am a student")}

void read(){system.out.println("I am reading...")}

}

p可以调用eat方法,执行的是Student里的函数主体;也可以调用sleep方法,子类里没有sleep方法,所以执行父类里函数主体;

但不能调用read方法,因为Person没有read方法;

向下转型:

向下转型是在向上转型的基础上加一行

Student s=(Student)p;

同样s也不是对象,是引用

s可以调用父类与子类里的所有方法,都执行子类中的函数主体,子类中没有的,则执行父类中的函数主体

总结:

1、父类引用可以指向子类对象,子类引用不能指向父类对象。

2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。

如Father father = new Son();

3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。

如father就是一个指向子类对象的父类引用,把father赋给子类引用son 即Son son =(Son)father;

其中father前面的(Son)必须添加,进行强制转换。

4、upcasting 会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效

不知道这里有没有错误,即使有错误现在也发现不了,慢慢学吧,就这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值