首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JAVA -为继承另一个类的子类的字段设置值

JAVA -为继承另一个类的子类的字段设置值
EN

Stack Overflow用户
提问于 2019-08-07 23:13:42
回答 1查看 250关注 0票数 1

我是Java语言的新手,我正在学习继承。我有个问题要问。

我有两个类:PersonStudent,如下所示:

public class Person {
     private int id;
     private String fullName;
     private String address;

     // getter, setter, constructor, ... will go here
}


public class Student extends Person {
     private String grade;

     // getter, setter, constructor, ... will go here
}


public class Demo {
    public static void main(String[] args){
        Person obj = new Student();
        obj.setFullName("John"); // I can do this easily
        obj.setGrade("6A");  //------> Error
    }
}

我只想问一下,我怎样才能为上面的对象obj设置分数,同时仍然保留声明Person obj = new Student();希望大家能帮助我!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-08-08 03:17:07

您遇到了早期绑定和后期绑定(也分别称为静态绑定和动态绑定)的概念。

简而言之,除非将obj对象(这是一个Person)强制转换为Student对象,否则您不可能完成要做的事情。正如Thomas所说的,这不是一个非常好的想法,但它在这里可以工作,因为您是在一个相当小的程序中自己制作所有对象(但不要养成这样做的习惯)。

更具体地说,当编译器第一次遇到obj对象(早期绑定)时,obj对象被视为Person,因此在obj上调用的所有方法都必须在Person类(或Person的超类)中定义,但是,obj仍然可以被实例化为Person的任何子类。

这种行为向程序员保证,无论其他人在子类中进行的实现或更改,这些方法都将仍然存在。

关于早期绑定和延迟绑定的更多资源:

https://www.techiedelight.com/difference-between-early-late-binding-java/

https://www.geeksforgeeks.org/static-vs-dynamic-binding-in-java/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57397530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档