Java基础 成员变量的继承与覆盖

经过继承能够获得父类的成员变量,子类的成员变量包括从父类继承的成员变量(包括从祖先类中继承的成员变量)以及子类中从新定义的成员变量。本次介绍内容包括:能够继承哪些成员?若是子类和父类出现了相同的成员变量如何处理?this

一、能够继承的成员变量继承

能够继承的成员变量与成员变量的访问控制类型有关,成员变量的访问控制类型包括public、protected、缺省的和private。get

子类继承父类以后,能够继承父类的public和protected类型的成员变量。例如:class

public class Parent{变量

      public int i_public;static

      int i_default;new

      protected int i_protected;return

      private int i_private;void

}

public class Child extends Parent{

      private int i_child;

}

父类的成员变量包括:

      public int i_public;

      int i_default;

      protected int i_protected;

      private int i_private;

子类的成员变量包括:

      public int i_public;             // 继承自父类

      protected int i_protected;// 继承自父类

      private int i_child;             //在子类中声明的

二、覆盖父类的成员变量

假设父类中定义了成员变量a而且可以被子类继承,子类中又定义了成员变量a,这样子类中会有两个名字为a的成员变量,如何访问呢?

先看下面的例子:

public class Parent{

      public int a=10;

}

public class Child extends Parent{

      public int a=20;

}

pubilc class Test{

      public static void main(String args[]){

             Child child = new Child();

             System.out.println(child.a);

      }

}

运行结果应该是什么呢?

结果应该为20,也就是子类中定义的变量的值。

若是想访问父类中定义的成员变量,如何访问呢?首先把child转换成Parent类型,而后再访问。

System.out.println(((Parent)child).a);

若是在child类中如何访问本身的成员和父类的成员内,经过super来访问,例以下面的代码:

    public int getParentA(){
     return super.a;
    }
    public int getChildA(){
     return a;
    }

访问子类的成员变量能够使用this,例以下面的代码:

    public int getChildA(){
     return this.a;
    }

注意:

1)从父类继承的成员变量,其访问控制符仍然相同。

2)子类定义与父类同名的成员变量,并无覆盖父类的成员变量,而是两个成员变量共存

相关文章
相关标签/搜索