Java中的引用和对象
我被这部分卡住了Java中的引用和对象,java,object,reference,Java,Object,Reference,我被这部分卡住了 class1 cls = new class2(); //class1 reference and class2 object 我知道这是方法重写,但不知何故,没有弄清楚幕后到底发生了什么。我需要一个清晰的视图,因为我可以在需要的地方实现它。任何带有例子的答案都会使概念更加清晰。谢谢好吧,它不是方法重写,它类似于下面的情况 马是一种动物。在Java中,您会说马是动物的一个子类 现在,让我们假设有一匹马的名字是“闪电”。在某种java意义上,您可以编写horse1=newhor
class1 cls = new class2(); //class1 reference and class2 object
我知道这是方法重写,但不知何故,没有弄清楚幕后到底发生了什么。我需要一个清晰的视图,因为我可以在需要的地方实现它。任何带有例子的答案都会使概念更加清晰。谢谢好吧,它不是方法重写,它类似于下面的情况
马
是一种动物
。在Java中,您会说马
是动物
的一个子类horse1=newhorse(“logstening”)代码>
animal1=newhorse(“logensing”)代码>
Horse
类有一个方法rideOnMyBack
也不能调用animal1.rideOnMyBack()
。。。因为在你和Java的对话中<代码>动物1被称为动物您问题中的代码行通常被称为“编程到接口”。它不是“方法重写”
在例如本网站上搜索此内容。例如,看 你的问题的代码片段应该是
Class1=newclass2()代码>非类class1=新类2()代码>因为您不能将任何对象指定给类的引用
而且这不是方法重写
方法重写是指在类中编写一个方法,其名称、参数和返回类型与其超类中的一个方法相同
在您的例子中,它被称为类型转换或自动装箱/拆箱。假设在您的例子中Class2扩展了Class1
,那么当您在内存中实例化Class2时,内存中将创建三个对象,如下图所示-
现在,当您执行Class1=newclass2()代码>将指定Class1本身的实际引用。但是根据代码,您会有一种在Class1中分配Class2对象的感觉,这在java中是不可能的
根据经验法则,您可以仅将该类的对象或null分配给引用,而不分配其他对象
现在访问方法和变量-
- 子类的方法总是优先考虑的。所以,若您有两个名称相同、参数相同的方法,那个么将调用子类的方法。这称为方法重写
- 实例变量将始终访问同一类
在接近编辑器和编译器之前,您应该先阅读一本关于Java编程的入门好书。Double docs!此外,您使用的名称具有误导性。类似于Class1 myObject=newclass2()代码>可能更容易理解是的,方法声明是错误的:),好吗now@Sunny在你的帖子中没有任何东西可以称为“方法声明”。说真的,在学习基础知识之前,你不应该尝试做任何具体的事情。这正是我需要知道的。非常感谢。“优先级总是被赋予子类的方法。因此,如果你有两个同名的方法,相同的参数,那么子类的方法将被调用。这称为方法重写”---这是一个非常有用的伙伴,绝对值得…虽然我在问题中犯了一个错误:D,但它,It’很高兴知道你得到了你所需要的。你可以投票并接受答案。:)