1. 姓 名:
    电 话:
       快 速
       留 言:
    验证码:
北大青鸟首页  >> 青鸟课堂 >> 软件课堂  >> 
java属性是否可以重写?

     子类继承父类后,如存在同名、同参、同返回值的方法,子类方法会重写父类的同名方法,那么如果父子存在相同的属性名会重写吗?参见如下代码:
public class Pet {
 public String name ;
 
 public String getName() {
  return name;
 }
 public Pet(){
  this.name = "pet";
 }
}
public class Dog extends Pet {
 public String name;
 public Dog(){
  this.name = "dog";
 }
 
}
 public static void main(String[] args) {
  Pet pet = new Dog();
  System.out.println(pet.name);
  System.out.println(pet.getName());
 }
系统运行后,输出结果为两个"pet",而没有任何"dog",为什么?
原来多态仅针对实例方法,与实例的属性无关。
如果修改Dog类,增加getName方法后,输出结果如何?
public class Dog extends Pet {
 public String name;
 public String getName() {
  return name;
 }
 public Dog(){
  this.name = "dog";
 }
}
输出结果为"pet" 和"dog",这验证了上述的结论:重写只对方法有效,对属性无效!