public class ExtendsTheory { public static void main(String[] args) { Son son = new Son(); // 输出时,按照查找关系 // 先在son这个子类中查找,有这个属性并且可以访问,则返回信息并输出 // 如果没有,则继续往上级的父类查找,直到Object System.out.println(son.name); // 查找到Son 中的 “张三” System.out.println(son.age); // Son中没有,则向上查找到 Father中的 40 System.out.println(son.hobby); // 向上查找到 Grandpa中的 “旅游” // 如果有这个属性,但是不能访问,则会直接报错。我们可以通过公共方法间接访问到 // 例如 weight 属性, Father类中是私有的,不能直接访问,Grandpa中是公共的,可以访问 // 当查找到Father时,发现了weight属性,但是不能访问,会发生报错 // 而不是发现不能访问后继续向上查找, 因为按照查找关系,已经找到了这个属性。 // System.out.println(son.weight); // 不能直接访问,报错,不会再查找了,即使上面 // 还有公共的weight,也不会被输出 System.out.println(son.getWeight()); // 通过公共方法访问到weight并输出 140 } } class Grandpa{ String name = "张五"; int age = 70; String hobby = "旅游"; int wight = 120; } class Father extends Grandpa{ String name = "张四"; int age = 40; private int weight = 140; public int getWeight() { return weight; } } class Son extends Father{ String name = "张三"; }
java继承中的查找关系
最新推荐文章于 2022-10-18 11:40:24 发布
