小编pop*_*ero的帖子

Java和对象类型中的继承

我正在学习一本AP CS A考试的书,特别是Barron的考试准备书.

这本书中有一节是指两个班,StudentGradStudent其中GradStudent extends Student.

GradStudent有方法getId()Student不是.

如果我要运行以下代码:

Student s = new GradStudent()
s.getId()
Run Code Online (Sandbox Code Playgroud)

这本书告诉我,我会收到一个错误.为什么是这样?由于我将其初始化为a GradStudent,无法s访问该方法getId()

本质上,如果我将变量声明为超类,并将其初始化为子类,会发生什么?

换句话说,如何做到sg下面的示例有所不同:

Student s = new GradStudent()
GradStudent g = new GradStudent()
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在明白s只能访问Student类中的方法.那么如果我执行以下操作会发生什么:

Student s = (new GradStudent().setId(1) )
Run Code Online (Sandbox Code Playgroud)

这个id领域会发生什么?(假设它只是存在于GradStudent类)如果我铸造sGradStudent再次,会是能够访问相同的id

java polymorphism inheritance

5
推荐指数
1
解决办法
151
查看次数

标签 统计

inheritance ×1

java ×1

polymorphism ×1