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


    通过继承可以得到父类的成员变量,子类的成员变量包括从父类继承的成员变量(包括从祖先类中继承的成员变量)以及子类中重新定义的成员变量。本次介绍内容包括:可以继承哪些成员?如果子类和父类出现了相同的成员变量如何处理?

    1、可以继承的成员变量

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

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

    public class Parent{

          public int i_public;

          int i_default;

          protected int i_protected;

          private int i_private;

    }

    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;             //在子类中声明的

    2、覆盖父类的成员变量

    假设父类中定义了成员变量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)子类定义与父类同名的成员变量,并没有覆盖父类的成员变量,而是两个成员变量共存

  • 相关阅读:
    STL容器[26]
    SHELL[01]
    SHELL[04]
    SHELL[02]I/O重定向
    STL容器[39]
    stl.set用法总结
    STL容器[33]
    STL容器[29]
    hdu acm1071
    hdu acm 2673
  • 原文地址:https://www.cnblogs.com/aademeng/p/6129796.html
Copyright © 2020-2023  润新知