Java继承和对象

Java继承和对象,java,object,inheritance,Java,Object,Inheritance,在某个程序中,父类是子类的超级类。有什么区别吗 Parent obj1=new Parent(); Parent obj2=new Child(); Child obj3=new Child(); 它们是三个不同的对象,两个是父类(超类),一个是子类(子类) Java中的固有性:它们是三个不同的对象,两个是父类(超类),一个是子类(子类) Java的固有性:好的,这里显示的关键概念称为。现在来回答你的问题,这是什么意思 父对象对象J2=新的子对象() 这意味着您正试图通过其父代引用

在某个程序中,父类是子类的超级类。有什么区别吗

Parent obj1=new Parent();  
Parent obj2=new Child();  
Child obj3=new Child();  

它们是三个不同的对象,两个是父类(超类),一个是子类(子类)


Java中的固有性:

它们是三个不同的对象,两个是父类(超类),一个是子类(子类)


Java的固有性:

好的,这里显示的关键概念称为。现在来回答你的问题,这是什么意思

父对象对象J2=新的子对象()

这意味着您正试图通过其父代引用您的子代,请记住,在本例中,由于您的子代已经继承了父代的属性,因此您可以通过类型为parent的引用(基本上是继承和oops的静态多态性)访问父代已知的属性是合乎逻辑的


要添加更多内容,只有父级知道的属性可以通过父级类型的引用访问,因为父级不知道有关子级可能已公开的功能的任何额外内容,但它知道子级拥有其固有的属性。

好的,此处显示的关键概念称为。现在来回答你的问题,这是什么意思

父对象对象J2=新的子对象()

这意味着您正试图通过其父代引用您的子代,请记住,在本例中,由于您的子代已经继承了父代的属性,因此您可以通过类型为parent的引用(基本上是继承和oops的静态多态性)访问父代已知的属性是合乎逻辑的

要添加更多内容,只能通过parents类型的引用访问父级已知的属性,因为父级不知道有关子级可能已公开的功能的任何额外内容,但它知道子级拥有其固有的属性

  • parent obj1=新的父对象()这里的引用变量(obj1)是父类型,在堆上创建的对象也是父类型

    • 您可以调用父类的所有和唯一方法
  • parent obj2=new child()这里的引用变量(obj2)是父类型,在堆上创建的对象(新的子对象)是子类型

    • 当您在obj2上调用一个方法时,它将从子类调用,如果在其中重载,则从父类调用
  • child obj3=new child()这与第一点相同。这里引用变量和对象都是子类型,与父类型无关

  • 阅读更多关于和

  • parent obj1=新的父对象()这里的引用变量(obj1)是父类型,在堆上创建的对象也是父类型

    • 您可以调用父类的所有和唯一方法
  • parent obj2=new child()这里的引用变量(obj2)是父类型,在堆上创建的对象(新的子对象)是子类型

    • 当您在obj2上调用一个方法时,它将从子类调用,如果在其中重载,则从父类调用
  • child obj3=new child()这与第一点相同。这里引用变量和对象都是子类型,与父类型无关


  • 更多信息,请参阅和

    obj1(第1行)和obj3(第3行)是您通常使用的非常简单的旧对象初始化。obj2(第2行)是很有趣的。它允许您在使用上面已经解释过的继承概念替换不同的子代的同时保持调用代码基本相同,从而在运行时表现出不同的行为。(使用相同的父句柄和使用此句柄的相同方法调用)

    obj1(第1行)和obj3(第3行)是您通常使用的非常简单的旧对象初始化。obj2(第2行)是很有趣的。它允许您在使用上面已经解释过的继承概念替换不同的子代的同时保持调用代码基本相同,从而在运行时表现出不同的行为。(使用相同的父句柄和使用此句柄的相同方法调用)第一个问题很明显:实例化同一类的对象。这意味着,对象
    obj1
    的构造/实例化方式与其类的任何其他实例相同。它具有相同的成员变量和相同的方法

    下一步几乎与上面相同。只是作为程序员,我们知道
    Child
    Parent
    的子类,因此具有与其父类相似的属性。但是,子类可以覆盖某些属性并更改其功能

    Child obj3=new Child(); 
    
    因此,如果调用
    obj3.parentMethod()
    ,结果可能与
    obj1.parentMethod()
    不同。但我们不能确定

    第三个是真正有趣的部分:

    Parent obj2=new Child(); 
    
    这里有一个
    obj2
    ,它是类
    Parent
    的实例。但是,将其实例化为
    实例,因此它的工作方式类似于
    实例(例如,当方法被覆盖时),但它不具有子实例的所有属性。。它仍然具有这些属性,并且它将使用它们……但是您将无法访问任何子方法。因此,它看起来像一个
    父对象
    ,但它的行为像一个
    子对象


    对于任何进一步的(更精确的)信息,您应该阅读或在其他答案中共享链接。

    第一个问题几乎是显而易见的:您实例化了同一类的对象。这意味着,对象
    obj1
    的构造/实例化方式与其类的任何其他实例相同。它具有相同的成员变量和相同的方法

    下一步几乎与上面相同。只是作为程序员,我们知道
    Child
    Parent
    的子类,因此具有与我类似的属性
    Parent obj2=new Child();