Java 类声明-对象类型不清楚

Java 类声明-对象类型不清楚,java,Java,如果有声明 人类汤姆=新运动员() 而运动员是人类的一个子类,哪个对象类型是汤姆 对于tom.method1() 我们使用哪种method1()?来自运动员类或人类类的人汤姆的实际类型是运动员。但是,由于tom的声明指定了Human,因此只能访问Human(及其超类)上定义的方法 如果Human上的方法在atternate中被重写,例如method1(),那么atternate上的实现就是被调用的实现 如果您将tom声明为atternate(根据您评论中的问题),则tom的实际类型不会改变。但是

如果有声明

人类汤姆=新运动员()

运动员
人类
的一个子类,哪个对象类型是
汤姆

对于
tom.method1()


我们使用哪种
method1()
?来自
运动员
类或
人类
类的人

汤姆
的实际类型是
运动员
。但是,由于
tom
的声明指定了
Human
,因此只能访问
Human
(及其超类)上定义的方法

如果
Human
上的方法在
atternate
中被重写,例如
method1()
,那么
atternate
上的实现就是被调用的实现


如果您将
tom
声明为
atternate
(根据您评论中的问题),则
tom
的实际类型不会改变。但是,您现在可以访问仅在
atternate
上定义的方法
tom
的实际类型是
atternate
。但是,由于
tom
的声明指定了
Human
,因此只能访问
Human
(及其超类)上定义的方法

如果
Human
上的方法在
atternate
中被重写,例如
method1()
,那么
atternate
上的实现就是被调用的实现


如果您将
tom
声明为
atternate
(根据您评论中的问题),则
tom
的实际类型不会改变。但是,您现在可以访问仅在
atternate

上定义的方法。对象始终基于您创建它的类(并且您可以使用关键字
new
创建对象)。在本例中,您将有一个
athletator
类的对象,该对象也将从
athletator
调用
method1()
,即使
Human
有自己的方法版本


如果
atternate
上没有
method1
,则您将从其超类中获得继承的方法。

对象始终基于您创建它的类(并且您使用关键字
new
创建对象)。在本例中,您将有一个
athletator
类的对象,该对象也将从
athletator
调用
method1()
,即使
Human
有自己的方法版本


如果
atternate
上没有
method1
,则您将从其超类获取继承的方法。

引用是父类型,但对象是子类型

在这种情况下,只有子类的重写方法、父类中的其他方法和实例变量对引用可见,而子类中的其他方法将不可见

你可以在这里得到澄清

引用是父类型,但对象是子类型

在这种情况下,只有子类的重写方法、父类中的其他方法和实例变量对引用可见,而子类中的其他方法将不可见

你可以在这里得到澄清

在本例中,tom是一种运动员对象。Athletor.method1重写super类中的方法。如果Athletor类中没有方法,则它将调用super方法,因为tom是Athletor对象的一种类型。Athletor.method1重写super类中的方法。如果Athletor类中没有方法,则它也将调用super方法

,Human tom=new athlethe()之间的区别是什么;运动员汤姆=新运动员();我已经更新了我的答案。另外,人类tom=new athlethe()之间的区别是什么;运动员汤姆=新运动员();我已经更新了我的答案。