reallyhgf 2024-03-23 11:35 采纳率: 50%
浏览 4
已结题

关于属性没有动态绑定机制的问题

java里的属性没有动态绑定机制,那我有一个A类里面有一个私有属性name,也有一个构造器,还有一个getName的方法,现在有一个B类继承了A类,他也有一个构造器,我new一个B对象,用这个对象调用getName方法,这个方法里的return name的name是直接跳过B类直接在A类里找吗

  • 写回答

4条回答 默认 最新

  • GISer Liu 2024-03-24 13:35
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据你的描述,Java中的属性没有动态绑定机制,但是方法是动态绑定的,这意味着当你调用一个方法时,实际执行的是对象的类型所对应的方法。然而,属性(即字段)不具有这种特性,它们是静态绑定的,也就是说,它们在编译时就确定了。
    针对你的问题,假设有一个A类和一个B类,B类继承了A类。A类中有一个私有属性name,还有一个构造器和一个getName方法。当你创建一个B类的实例并调用其getName方法时,该方法中的返回语句是不会跳过B类而直接在A类中查找的。因为属性是静态绑定的,编译时就已经确定了,而B类继承了A类,所以B类的实例中也会包含A类的私有属性name,只是在B类的作用域内无法直接访问而已。
    如果你想在B类中访问name属性,你可以通过调用父类的方法来实现。在Java中使用``` super

    javaCopy code
    

    class A {
    private String name;
    public A(String name) {
    this.name = name;
    }
    public String getName() {
    return this.name;
    }
    }
    class B extends A {
    public B(String name) {
    super(name);
    }
    public String getNameFromB() {
    return super.getName(); // 调用父类的getName方法获取name属性
    }
    }
    public class Main {
    public static void main(String[] args) {
    B b = new B("John");
    System.out.println(b.getNameFromB()); // 输出 "John"
    }
    }

    ```
    在这个示例中,B类继承了A类,并且B类中定义了一个新的方法getNameFromB,该方法调用了父类A的getName方法来获取name属性的值。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 修改了问题 3月23日
  • 修改了问题 3月23日
  • 展开全部

悬赏问题

  • ¥15 Windows X86 远线程注入问题解惑
  • ¥15 Vs2022安装时黑框闪退无反应
  • ¥15 嵌入式设备网口down后再up时不能link?
  • ¥15 关于区块链和边缘计算
  • ¥15 做一个简单项目,用Python分析共享单车的数据
  • ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
  • ¥15 有办法改变通过wifi进入的网站的设置吗
  • ¥15 所以到底怎么算!算到凌晨五点都算不出来!
  • ¥15 label_studio
  • ¥15 请教如何phython发邮件