java错误中的继承,从直觉上看是向后的
潜艇延伸三明治。所以我的理解是Sub是三明治,但三明治不是Sub,对吗 那么为什么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都是一个三明治。
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
)
<>我希望对您有所帮助。 您应该考虑<代码>子<代码>类总是比
子类声明了一个新方法并且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 {}