如果在父类中,你声明了一个静态变量。

然后你有两个子类继承了这个父类。我们想看看这两个子类调用继承的父类的类变量a是不是同一个值。

这时候注意,我们在子类的时候不能重写static int a = a+2; 因为你一旦 这样重写了,那么这个子类的a肯定就不是父类的那个a了,那么这时候你想得写成a=a+2;但是这时候就有个问题了。你不能在子类中直接写a=a+2,只能在子类的初始化块中写a=a+2或者在方法中使用;不然会出现:

我认为这是因为:使用继承到的父类的变量只能通过 写在{}使用,或者在方法中使用。

所以我们在adda方法中使用,如下图:

通过最终的结果我们可以发现:两个子类继承一个父类(父类中有一个静态变量a),如果两个子类不重写这个变量的话,那么这两个子类的和父类调用的a是同一个a。

。。。。。。。。。。。。。。。。。。。。。。分割线。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

如果在父类中定义了一个成员变量a。

然后我们定义两个子类,看看这两个子类继承的父类中的成员变量是什么情况?我们同样注意在子类的时候不能重写static int a = a+2; 因为你一旦 这样重写了,那么这个子类的a肯定就不是父类的那个a了,并且还是同样得在方法中或者初始化块中使用未重写的从父类继承的a变量。

我们读完代码会发现:两个子类继承了一个父类(父类中有一个成员变量),那么这两个子类之间关于a是不存在共享关系的。但是每个子类和父类都是共享的同一个值a。(当然前提是你没有在子类中重写a变量,如果重写了,每一个子类与父类也不存在共享a的关系了)。

还有我们最后new Parent().a (这么写是因为在静态变量中不能调用非静态成员变量)看到得到的是5.因为这个新new出来的父类的实例和这两个子类并没有关系。

over~

java继承的一些问题的更多相关文章

  1. Java继承与组合

    Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...

  2. JAVA继承时构造函数的问题

    今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了. 下面是我个人的总结: 先创建一个父类,里面有两个构造函数: public class Jisuan ...

  3. Java继承和接口

    接口最关键的作用,也是使用接口最重要的一个原因:能上溯造型至多个基础类.使用接口的第二个原因与使用抽象基础类的原因是一样的:防止客户程序员制作这个类的一个对象,以及规定它仅仅是一个接口.这样便带来了一 ...

  4. Java继承的初始化

    /** * Created by xfyou on 2016/11/2. * Java继承的初始化 */ public class Beetle extends Insect { int k = pr ...

  5. Java—继承、封装、抽象、多态

    类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...

  6. java继承关系中成员变量,构造方法,成员方法的关系

    Java继承中的成员关系 A:成员变量 a:子类的成员变量名称和父类中的成员变量名称不一样,这个太简单写那个名字就访问那个名字! b:子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问呢? 子 ...

  7. JAVA继承时this和super关键字

    JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...

  8. JAVA 继承中的this和super

    学习java时看了不少尚学堂马士兵的视频,还是挺喜欢马士兵的讲课步骤的,二话不说,先做实例,看到的结果才是最实际的,理论神马的全是浮云.只有在实际操作过程中体会理论,在实际操作过程中升华理论才是最关键 ...

  9. java 继承、重载、重写与多态

    首先是java 继承.重载和重写的概念 继承: 继承的作用在于代码的复用.由于继承意味着父类的所有方法亦可在子类中使用,所以发给父类的消息亦可发给衍生类.如果Person类中有一个eat方法,那么St ...

  10. Java 继承中构造方法的执行顺序问题

    在Java中,如果一个类没有任何显式创建的构造器则该类默认会有一个无参构造器:如果显式创建了有参构造器则该类就不再有默认无参构造器. 在Java继承中,构造器并不能被继承,而是被显示或隐式调用. 1. ...

随机推荐

  1. 四.mysql演示银行转账

    代码演示: #conding:utf8 import pymysql import sys class TransferMoney(object): def __init__(self,conn): ...

  2. EJB远程客户端和本地客户端

    在客户端中使用企业bean 企业bean的客户端通过依赖注入或JNDI查询的方式获得对企业bean实例的引用. 依赖注入是获得对企业bean实例的引用的最简便的方法. (紧耦合的bean之间相互依赖, ...

  3. JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1.    JSP模板元素:JSP中HT ...

  4. Python3+Selenium3自动化测试-(五)

    这里来说一说selenium中的等待方式,其实在webdriver只有两种类型等待方式,显式等待和隐式等待,之前是在程序运行过程中使用time模块中的sleep进行代码的休眠进行强制等待,是显式等待中 ...

  5. R 入门笔记

    PS:初学R  为了查阅方便 借鉴的网友的博客和自己的总结记录一下 http://blog.csdn.net/jack237/article/details/8210598 命令简介 R对大小写是敏感 ...

  6. Java基础知识陷阱(一)

    本文发表于本人博客. 事隔好多年了,重新拿起来Java这门语言,看似熟悉其实还很陌生,想想应该梳理下顺便提高下自己.这次先来看看Java里面的String这个对象. 经典的先看下面一段代码,请问最终创 ...

  7. PL/SQL编程—视图

    create or replace view test_view as select TestA.id, TestB.idno, TestB.name, TestB.sex from TestB le ...

  8. Java并发之CyclicBarria的使用

    Java并发之CyclicBarria的使用 一.简介 笔者在写CountDownLatch这个类的时候,看到了博客园上的<浅析Java中CountDownLatch用法>这篇博文,为博主 ...

  9. 20145219 《Java程序设计》第10周学习总结

    20145219 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  10. QT的基本数据类型

    QT的基本数据类型(转) qint8:signed char 有符号8比特数据 qint16:signed short 16位数据类型 qint32:signed int. 32位有符号数据类型 qi ...