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

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

Java基础 成员变量的继承与覆盖的更多相关文章

  1. Java基础-成员变量与局部变量

    Java基础-成员变量与局部变量 1.什么是成员变量与局部变量? public class Student {   String name;   int high;   public void stu ...

  2. java基础疑难点总结之成员变量的继承,方法重载与重写的区别,多态与动态绑定

    1.成员变量的继承 1.1要点 子类用extends关键字继承父类.子类中可以提供新的方法覆盖父类中的方法.子类中的方法不能直接访问父类中的私有域,子类可以用super关键字调用父类中的方法.在子类中 ...

  3. 谈谈java中成员变量与成员方法继承的问题

    谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类:

  4. JAVA中方法和变量在继承中的覆盖和隐藏

    出处:http://renyanwei.iteye.com/blog/258304 我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际 ...

  5. JAVA中方法和变量在继承中的覆盖和隐藏(一)

    我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...

  6. Java基础:变量、常量、作用域

    JAVA基础:变量.常量.作用域 变量:可以变化的量.Java是强类型语言,每个变量都必须声明类型. Java变量是程序中最基本的存储单元,要素包括变量名,类型和作用域. //类变量 static s ...

  7. JAVA之成员变量初始化

    java中成员变量的初始化,如果是普通成员变量可以赋初值,如果没赋初值,则系统会自动赋初值.而对于局部变量必须手动赋初值. package MyText2; public class MyText1 ...

  8. Java中类成员变量初始化顺序

    一. 定义处默认初始化vs构造函数中初始化 java中类成员变量支持在声明处初始化,也可以在构造函数中初始化,那么这两者有什么区别呢?看下面例子 public class FieldsInit { p ...

  9. java中成员变量,局部变量,静态变量的辨析

    转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...

随机推荐

  1. controller层中,参数的获取方式以及作用域的问题

    package com.krry.web; import javax.servlet.http.HttpServletRequest; import org.springframework.stere ...

  2. MySQL新建用户与授权

    一.登录root用户 [root@iZm5e9gg1p5y1co0usac2cZ webapps] # mysql -uroot -p 二.新建用户 mysql> create user '; ...

  3. JavaScript的那些事儿

    关于JavaScript的对象数据类型: Object 定义一个对象类型: 例如:var person=new Object(): 当然在建立对象以后我们可以为他添加属性, 如: <script ...

  4. PKUWC2018游记

    PKUWC2018游记 Day -inf 从去年的12月底开始停课,到现在也有整整一个月的时间了. 前两周考的是OI赛制,后来就变成了IOI赛制. 整体上考的很炸,虐场的次数远少于被虐的次数. 关于去 ...

  5. [BZOJ1061] [Noi2008] 志愿者招募 (费用流)

    Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能 ...

  6. JAVA面试题二

    JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...

  7. AWS 认证攻略(SA)

    很高兴经过一个多月的努力顺利pass了自己的SA认证,同事说证都是虚的,不过考个证也算是对自己实力的认可吧,博主第一次写博文,先简单的写一些认证的攻略吧 1.博主11月正式入职云服务提供商,领导要求每 ...

  8. 2018第一波iOS经典笔试题(现场实拍)

    序言 作为一个开发者,眼里不仅仅只存在于那一行又一行的代码,更还有那诗和远方. 注明:面试是对自我审视的一种过程,面试题和iOS程序员本身技术水平没任何关联,无论你能否全部答出,都不要对自己产生任何正 ...

  9. Mysql 忘记管理员密码更改

    对管理员设置密码 第一种方式: #mysqladmin -u root password 'new-password'; #mysqladmin -u root -h localhost passwo ...

  10. 误操作导致 lvdisplay 命令不存在解决

    1.lvdisplay 命令不存在 查看lvm2 包被卸载2.执行 yum install lvm2 命令 发现 yum 被锁 3.删除yum.lock 发现/ 目录只读4.mount -o remo ...