java错误中的继承,从直觉上看是向后的

java错误中的继承,从直觉上看是向后的,java,inheritance,Java,Inheritance,潜艇延伸三明治。所以我的理解是Sub是三明治,但三明治不是Sub,对吗 那么为什么y=x(本质上是sub等于sandwich)抛出一个错误,但是x=y(sub等于sandwich)起作用呢 以下是子类: public class Sub extends Sandwich {} Sandwich比Sub类型更通用。 Sub比Sandwich类型更特殊。 除了父类要素外,子类还有更多要素 Parent=Sub x=y 可以将子类引用指定给父类引用,然后 这是关于多态性的。每个sub都是一个三明治。

潜艇延伸三明治。所以我的理解是Sub是三明治,但三明治不是Sub,对吗

那么为什么
y=x
(本质上是
sub
等于
sandwich
)抛出一个错误,但是
x=y
sub
等于
sandwich
)起作用呢

以下是
子类

public class Sub extends Sandwich {}

Sandwich
Sub
类型更通用。
Sub
Sandwich
类型更特殊。 除了父类要素外,子类还有更多要素

Parent=Sub
x=y

可以将子类引用指定给父类引用,然后 这是关于多态性的。每个
sub
都是一个
三明治
。因为父类接口支持子类接口


但不能将父类引用指定给子类引用。因为
Sub
类型比
Sandwich
类型更具体,每个三明治都不是Sub.

Sandwich
类型比
Sub
类型更一般。
Sub
Sandwich
类型更特殊。 除了父类要素外,子类还有更多要素

Parent=Sub
x=y

可以将子类引用指定给父类引用,然后 这是关于多态性的。每个
sub
都是一个
三明治
。因为父类接口支持子类接口

但不能将父类引用指定给子类引用。因为
Sub
类型比
Sandwich
类型更具体,而且每个三明治都不是Sub.

y=x
意思是“我有一个三明治,请把它当作Sub”,如果我有的实际上是一个panini,这是行不通的

x=y
意思是“我有一个潜艇,请把它当作三明治来对待”,这没问题。

y=x
意思是“我有一个三明治,请把它当作潜艇来对待”,如果我有的实际上是一个帕尼尼饼,这是行不通的


x=y
意思是“我有一个潜艇,请把它当作三明治来对待”,这没问题。

答案是你自己的问题

我的理解是Sub是三明治,但三明治不是Sub

Sub”是一种“三明治”
这意味着您可以将
y
(子对象)视为
Sandwich
,并使用
Sandwich
变量引用它:
x=y
(因为
Sub
Sandwish

三明治”不是“子”
另一方面,您不能将
x
(Sandwish对象)视为
Sub
,也不能使用
Sub
变量引用它:
y=x
错误(因为
Sandwish
不是
Sub


我希望能帮助你。

答案是你自己的问题

我的理解是Sub是三明治,但三明治不是Sub

Sub”是一种“三明治”
这意味着您可以将
y
(子对象)视为
Sandwich
,并使用
Sandwich
变量引用它:
x=y
(因为
Sub
Sandwish

三明治”不是“子”
另一方面,您不能将
x
(Sandwish对象)视为
Sub
,也不能使用
Sub
变量引用它:
y=x
错误(因为
Sandwish
不是
Sub


<>我希望对您有所帮助。

您应该考虑<代码>子<代码>类总是比Save类更具功能性,因为<代码>子< /代码> <强>扩展< /强> <代码>三明治< /代码>。也就是说,如果
类声明了一个新方法并且
y=x
编译时没有错误,当对象根本没有它时,如何调用
y.newMethod()
?这就是为什么
y=x代码中的赋值不能编译。

你应该考虑<<代码>子>代码>类总是比<代码>三明治< /代码>类更具功能性,因为<代码>子< /代码> <强>扩展< /强> <代码>三明治< /代码>。也就是说,如果
类声明了一个新方法并且
y=x
编译时没有错误,当对象根本没有它时,如何调用
y.newMethod()
?这就是为什么
y=x代码中的赋值无法编译。

不,你的理解是错误的。那么好吧。为什么呢请详细说明。如果猫延伸到动物,那么每只猫都是动物,但不是每只动物都是猫。这正是我对它的理解。但是错误却恰恰相反。
y=x
的意思是“我有一个三明治,请把它当作一个潜艇来对待”,如果
x
实际上是一个帕尼尼饼,这就不起作用了
x=y
的意思是“我有一个潜艇,请像三明治一样对待它”,这没问题。不,你的理解是错误的。好吧。为什么呢请详细说明。如果猫延伸到动物,那么每只猫都是动物,但不是每只动物都是猫。这正是我对它的理解。但是错误却恰恰相反。
y=x
的意思是“我有一个三明治,请把它当作一个潜艇来对待”,如果
x
实际上是一个帕尼尼饼,这就不起作用了
x=y
的意思是“我有一个潜艇,请像三明治一样对待它”,这没有问题。
public class Sub extends Sandwich {}