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中,您会说
    动物
    的一个子类

  • 现在,让我们假设有一匹马的名字是“闪电”。在某种java意义上,您可以编写
    horse1=newhorse(“logstening”)

  • 但是再一次。。。因为每匹马都是动物。。所以你也可以写,
    animal1=newhorse(“logensing”)

  • 但是。。。有什么区别?好区别在于,当你提到一种动物时,你应该谈论适用于所有动物的事情。。。不仅仅是马。在任何对话中。。。如果你对任何动物说“马特有的”话。。。人们会感到困惑。例如,你不能只说“我骑在我的宠物动物闪电背上”。。。好其他人不知道闪电是马,你不能骑在所有的动物身上。类似地,在Java中,即使
    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’很高兴知道你得到了你所需要的。你可以投票并接受答案。:)