Java中的辅助引用
在这里,我们如何将子引用分配给父引用?b和c也是不同的对象类型,那么我们如何将它们分配给另一个呢?Java中的辅助引用,java,Java,在这里,我们如何将子引用分配给父引用?b和c也是不同的对象类型,那么我们如何将它们分配给另一个呢?a,b和c是a类型的变量,这意味着它们可以保存对a类或a的任何子类的引用,其中包括类B和C 当你写作时 class A{} class B extends A{} class C extends A{} public class Test { public static void main(String [] args){ A a = new A(); A b = new
a
,b
和c
是a
类型的变量,这意味着它们可以保存对a
类或a
的任何子类的引用,其中包括类B
和C
当你写作时
class A{}
class B extends A{}
class C extends A{}
public class Test {
public static void main(String [] args){
A a = new A();
A b = new B();
A c = new C();
a = b;
b = c;
}
}
您没有将类C
的对象分配给类B
的变量(无法通过编译),而是将类C
的对象(由C
变量持有)的引用分配给类a
的变量
我们如何将子引用分配给父引用
在面向对象的概念中,当您说类B扩展了A
时,类B
与类A
保持IS-A关系。因此,可以将B对象作为类型A指定给引用
b和c是不同的对象类型,那么我们如何将它们分配给
另一个
即使它们是不同的类型,因为类B
IA-A类A和类C
(同样)是类A
的-A类型(根据它们的关系),所以您可以将两个B&C对象都指定给引用类型A
但是重要的一点是,您不能调用引用类型
A
指向对象B
的B
特定成员(方法/字段),也就是说,您只能调用引用类型A
的A成员(即使对象是B
)因为多态性和遗传性。当你这么说的时候
b = c;
实际上你说,所有的经理都是工人。但经理比工人更特殊。因此,我们使用extends
关键字进行继承。每一位经理都是一名工人,但更为细致的工人
class Manager extends Worker{}
在第一行中,o1
是工作者对象(常规类型)。
第二行是向上投射的一个例子。这一行表示:o2
是一个管理器对象,但o2的接口是工作者接口。
在第三行,因为每个经理都是工人,您可以将管理器对象分配给工作者类型引用。b
和c
是相同类型的引用:a
,即使它们引用不同类型的对象,它们仍然可以相互分配,因为所需的只是被引用对象是a
的实例。除此之外,“儿童参考”是什么意思?你的意思是子类/超类类型的引用吗?公共类a{}公共类B扩展了{}公共类C扩展了{}列表listA=newArrayList();List listB=新的ArrayList();listA=listB;listB=listA;为什么这是无效的then@VipinDubey因为ArrayList
不是ArrayList
的子类。
Worker o1 = new Worker();
Worker o2 = new Manager();
o1 = o2;