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,这两种有什么区别呢,还是下面这种写法 不好。
}
} 展开
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,这两种有什么区别呢,还是下面这种写法 不好。
}
} 展开
5个回答
展开全部
多态的知识 ,背下来 父类引用指向子类对象 调用方法的时候是动态绑定 就是后绑定 可见性要看父类 调用时调用子类的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题1,首先你的Test是Test1的子类,Test t声明的是一个子类的变量,你new一个父类的对象赋值当然是反了。
向上转型应该是Test1 t=new Test();
问题2,new关键字是在推中给对象分配内存空间。new的是哪个对象,就是哪个类的实例。
问题3,前面的声明Test obj;就相当于指针,是一个引用,保存后面被new出来的对象的在内存中的首地址,使用的时候可以通过这个obj找到内存中的对象。
如果没有用变量,直接new,同样在堆中分配了内存,但是却无法使用,然后被JAVA的垃圾处理机制认做是“垃圾”,在适当的时候被释放回收。
向上转型应该是Test1 t=new Test();
问题2,new关键字是在推中给对象分配内存空间。new的是哪个对象,就是哪个类的实例。
问题3,前面的声明Test obj;就相当于指针,是一个引用,保存后面被new出来的对象的在内存中的首地址,使用的时候可以通过这个obj找到内存中的对象。
如果没有用变量,直接new,同样在堆中分配了内存,但是却无法使用,然后被JAVA的垃圾处理机制认做是“垃圾”,在适当的时候被释放回收。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是继承你在哪要转型???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询