Java——关于继承一点个人理解

继承(构造方法的执行顺序——父类无参、子类无参、父类无参(因为执行子类的构造函数一次就要调用父类的构造)、子类有参)

  1、成员变量的继承

      (1)、当子类与父类定义了一个同名变量时, 子类与父类的同名变量同时存在, 互不干扰(父类的变量在子类中隐藏了)

      (2)、子类中未定义的变量可以直接从父类中继承

  2、方法的继承

      (1)、在子类中定义了一个同名、同类型、同参数的方法时, 父类的方法将会被覆盖(不可见、即使在父类中也不可见)

      (2)、子类未定义的方法可以从父类中直接继承(也就是说子类可以直接使用父类中的public方法)

  3、super关键字

      (1)、使用方法——

            访问父类的无参构造方法——super();

            访问父类的有参构造方法——super(参数列表);

            访问父类的成员变量——super.变量名称;

  4、总结

      (1)、子类无条件的继承父类的构造方法

      (2)、如果子类没有定义构造方法、它将把父类的无参构造方法作为自己的构造方法(不包括父类的有参构造方法),

          如果子类定义了构造方法、则父类的无参构造方法-->子类无参-->父类无参(对子类无参中的内容没有影响)-->子类有参

时间: 2024-11-11 03:17:33

Java——关于继承一点个人理解的相关文章

Java反射的一点简单理解

最近才开始学Java,这两天接触了框架后对于反射的概念有很大的困惑,在网上检索了很多信息后发现大多都是在说反射怎么使用的.将反射的原理以及为什么需要反射的比较少,即使有讲很多都比较晦涩难懂. 参考: 学习java应该如何理解反射? - 罗大然不写代码的回答 - 知乎) 后来终于找到了一篇知乎回答讲反射的作用的,我觉得讲得很好,加上一些个人的些微见解记录下来. 简单的水果工厂 这位答主用了一个简单的工厂模式举例来说明反射的作用: // Fruit接口 public interface Fruit

关于Java中继承和接口的理解

关于Java中继承和接口的理解 Java语言中,为了实现代码重用,设计了继承这一机制,但是,其设计成单继承,这样设计是有原因的,如下图: Figure1:deadly diamond of death 此图问题称为菱形问题(diamond problem),就是说,当A的子类B和C同时实现了A中的方法,则同时继承了B和C的子类D在调用该方法时会出现混乱,无法得知该调用哪一个方法. 既然不能实现多继承,我们就会考虑把很多方法就写在父类里,或者继承抽象类,实现其方法,但是,这样会导致一个问题,比如说

【深入理解JVM】:Java类继承关系中的初始化顺序

Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,其中静态代码块中如果静态成员变量sam不为空,则改变sam的引用.main()方法中创建了2个主

新秀翻译(一个)——Java在继承和组合

阅读英文的程序猿的能力,这是非常重要的.过去的几年中一直在学习英语,今天心血来潮,在网上找什么鲍文简要翻译. 普通级,能力有限,看官还请大家多多指点. 译文: 本文将会举例说明Java中继承和组合的概念.首先举一个继承的样例.然后展示一下怎样用组合来改善继承的设计.最后概括一下怎样在它们之间做出选择. 1. 继承 假设我们有一个Insect类.这个类包括两个方法:一个是move().一个是attack(). class Insect { private int size; private Str

牛刀小试 - 浅析Java的继承与动态绑定

什么是继承? 继承也是面向对象的重要特性之一.顾名思义,继承就是指从已有的类中派生出新类的动作.新的类能吸收已有类的数据属性和行为,并能扩展新的能力. 而通俗一点的来说,就是指Java中可以通过继承的方式,从现有的类派生出新的类.该现有类被称为超类(父类),而派生出的新类就被称为子类(派生类). 首先,子类访问继承超类当中的所有非私有的方法和成员变量:其次,还可以在父类原有的成员的基础上添加一些新的方法和域,或者对父类的方法进行覆写(override). 所有通常也这样讲:父类是子类的一般化表现

Java基础1:深入理解Java面向对象三大特性

Java基础1:深入理解Java面向对象三大特性 三大特性:继承 封装 多态 继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类. 子类拥有父类非private的属性和方法. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展. 子类可以用自己的方式实现父类的方法 Java中的继承只能单继承,但是可以通过内部类继承其他类来实现多继承. public class Son extends Father{publi

Java基础8:深入理解内部类

Java基础8:深入理解内部类 内部类初探 一.什么是内部类? 内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限).内部类主要有以下几类:成员内部类.局部内部类.静态内部类.匿名内部类 二.内部类的共性 (1)内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 . (2)内部类不能用普通

java类继承总结一 父类类型与子类类型之间的转化问题(转)

java类继承总结一 父类类型与子类类型之间的转化问题 本文将通过一个实例描述父类类型与子类类型之间的转化问题,这个很特殊的问题常常会导致一些潜在的危险,让你整整一个晚上都在调试程序以解决一个让人抓狂的java.lang.ArrayStoreException异常. 1. 子类数组的引用可以装换为超类数组的引用 2. 子类的引用child可以转换为父类的引用parent(这里假设parent是父类对象,child是子类对象),但却不可以通过 parent调用child的特有方法 class Em

java提高篇(四)_理解java的三大特性之多态 转自 http://cmsblogs.com

多态就是指程序中定义 的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该 引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定.因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让 引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个 运行状态,这就是多态性 一. 向上转型