JAVA对象类型的转换

classTest1{Test1(){System.out.println(1);}}publicclassTestextendsTest1{publicstaticvo... class Test1{
Test1(){
System.out.println(1);
}
}
public class Test extends Test1 {
public static void main(String args[]){
Test t = new Test1();// 按对象类型的转换(向上转型); 我Test继承Test1,为什么还是不能转型,报错? 难道是写反了,Test1应该在前面?
//还有这个NEW关键字,到底是干什么的呢? 创建对象? 分配空间? 如果两边出现不同的类(如上),那么实例哪个类呢,又是分配哪个的空间呢?
//还有Test obj = new Test(); 这个是实例化对象。
//那么我直接 new Test(); 这个也没有报错啊,区别在于少了个类引用obj,这两种有什么区别呢,还是下面这种写法 不好。

}

}
展开
 我来答
易建议
2014-12-25 · 喜欢分享的人都容易获得幸福感~
易建议
采纳数:344 获赞数:1342

向TA提问 私信TA
展开全部
Test1 t1 = new Test() ; //这才是向上转型

new Test()是子类对象,但是被父类的引用t1指向了,父类引用指向子类对象,所以是向上转型。



new 是为对象分配空间的,但是没有被指向,所以需要Test obj = new Test(); obj来指向它,否则后面无法使用到此对象

优质内容提供者andy
2014-12-25 · TA获得超过1561个赞
知道大有可为答主
回答量:2551
采纳率:72%
帮助的人:750万
展开全部
多态的知识 ,背下来 父类引用指向子类对象 调用方法的时候是动态绑定 就是后绑定 可见性要看父类 调用时调用子类的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
302652034_bai
推荐于2016-01-03 · TA获得超过4144个赞
知道大有可为答主
回答量:2206
采纳率:66%
帮助的人:1524万
展开全部
问题1,首先你的Test是Test1的子类,Test t声明的是一个子类的变量,你new一个父类的对象赋值当然是反了。
向上转型应该是Test1 t=new Test();

问题2,new关键字是在推中给对象分配内存空间。new的是哪个对象,就是哪个类的实例。

问题3,前面的声明Test obj;就相当于指针,是一个引用,保存后面被new出来的对象的在内存中的首地址,使用的时候可以通过这个obj找到内存中的对象。
如果没有用变量,直接new,同样在堆中分配了内存,但是却无法使用,然后被JAVA的垃圾处理机制认做是“垃圾”,在适当的时候被释放回收。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ittimeline
2021-03-31
知道答主
回答量:87
采纳率:0%
帮助的人:3.9万
展开全部

基本数据类型的类型转换

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
發呆碼字員
2014-12-25 · TA获得超过331个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:261万
展开全部
这是继承你在哪要转型???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式