有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    不会有任何编译错误或运行时错误

    public class Parent {
    private String name;
    private int age;
    }
    
    public class Child extends Parent {
    String parent;
    public int age;
    }
    

    在这里,您可以访问child。年龄从主要阶级。。。这是为派生类提供公共变量所能获得的唯一好处

  2. # 2 楼答案

    这有点像和你表妹结婚;合法,但不建议

    它可能会导致各种令人困惑的行为,因为子类声明隐藏了父类声明

  3. # 3 楼答案

    这叫做阴影,可能会给开发人员带来问题

    就你而言:

    Child child = new Child();
    child.a = 1;
    System.out.println(child.a);
    System.out.println(((Parent)child).a);
    

    会打印

    1
    0
    
  4. # 4 楼答案

    child.a阴影(或隐藏parent.a

    这是合法的,但应该避免。我希望你的IDE能给你一个警告

    然而,请注意,这只是一个问题,因为您已经向世界暴露了一个变量。如果首先确保所有变量都是私有的(将方法的API从字段的实现中分离出来),那么父级和子级是否具有相同的字段名无关紧要——子级无论如何都无法看到父级的字段。如果将一个方法从子方法移动到父方法,可能会造成混乱,而且通常对可读性不是很好,但比隐藏情况要好