△先默认初始化,在显示初始化,在构造函数初始化
△继承的弊端:代码的耦合性增加了.
△子类不能继承父类的构造方法.
△子类会拥有父类的私有成员变量,但是必须通过get,set方法访问.
△super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字.
△如果子类没有显示的调用超类的构造器,则将自动的调用超类默认的构造器,如果超类没有不带参数的构造器,并且在子类的构造器中也没有显式的调用其他构造器,将会编译报告错误.
△顺序:
父类的静态成员赋值和静态块,默认初始化 (静态块和静态成员的顺序为,谁在前面谁先执行(在不出错的情况下)(父.class先加载,子.class再加载)
子类的静态成员和静态块 ,默认初始化
跳转到父类的构造方法,再跳到构造代码块. 
父类的成员赋值和初始化块 
父类的构造方法中的其它语句 
子类的成员赋值和初始化块 
子类的构造方法中的其它语句 
父类静态代码块--子类静态代码块--父类构造代码块--父类构造方法--子类构造代码块--子类的构造方法.
△子类中的有参构造函数和空参构造函数都默认为访问父类的空参构造函数.子类重写父类方法的时候,访问权限不能更低.父类静态方法只能在子类中由子类所覆盖.
 方法重载:本类中出现的方法名一样,参数列表不同的方法,与返回值无关
 方法重写:子类重写父类的方法,与返回值有关,必须相同或者是子父类
△final所修饰的变量要不然直接显示初始化,要不然采用构造函数初始化和构造代码快初始化.
△动态绑定:在运行的时候确定所需要调用的方法.虚拟机一定调用与x引用对象实际类型最合适的那个类的方法.静态绑定当且仅当方法关键字为private,static,final的时候采用,编译器将可以准确的知道应该调用哪个方法.
△父类引用的成员变量是父类的成员变量
父类引用使用子类方法:编译看左边,运行看右边,动态绑定.子类方法中的父类变量仍然要看子类有没有重写该变量,子类方法的变量隐式参数是this.
 子父类的静态方法:编译看左边,运行也看左边.
△子类重写父类的方法的时候,有一种特殊的情况,即super.show().此时,调用的是父类的show方法,而不是覆盖重写后的子类的show方法.因为,super指向的是父类空间.
△Java7新特性:Objects类.
  static boolean equals(Object a,Object b):判断两个对象是否相等,使用的是对象a的equals方法.
  static int hash(Object...objects):返回一个散列码,由提供的所有对象的散列码组合得到.(很实用,可以在覆盖equals和hashcode方法的时候根据equals用到的成员变量便捷覆盖hashcode方法).也可以用这个方法调用Objects.hash(7)便捷获得基本数据类型的hashcode.
△对于equals方法的覆盖,应该遵循两个原则:
  • 如果子类拥有自己的相等概念,那么对称性需求将强制采用getclass进行检测.
  • 如果由超类决定相等的概念,可以使用instanceof并对超类的类名进行检测,这样可以在不同的子类之间进行相等的比较,并且将父类的equals方法声明为final.
△getClass是指运行时类,因此父类引用指向子类对象的时候,所得的getclass是子类的class对象
△Instance of 判断引用是否指向后面的数据类型..
△父类属性存储方式是在堆中的子类对象里面分配空间

一个对象的实例化过程:
     Person p=new Person();
     1.jvm会读取指定路径下的Person.class文件,并加载进内存,并会加载Person的父类
     2.在堆内存中开辟空间,分配内存地址。
     3.并且在对象空间中,对对象的属性进行默认初始化。
     4.调用相应的构造函数进行初始化。先进子类构造函数,在子类构造函数中,第一行会调用父类构造函数进行初始化,父类初始化完毕后(先显示初始化在构造函数初始化),再对子类属性进行显示初始化,然后调用子类构造函数进行特定的初始化。
     5.将地址赋给相应的变量。
△对于父类的方法覆盖时,方法签名必须相同,返回值也必须相同或者为子类也可以.
△对象引用的类型转换:1).只能在继承层次内进行类型转换2).在超类转化为子类之前应该使用instanceOf进行检查

JavaSE复习_3 继承的更多相关文章

  1. JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写

    /* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...

  2. javaSE复习之——线程

    线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...

  3. JavaSE复习(一)继承多态与常用API

    继承与多态 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式: 直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上找 间接通过成员方法访问成员变量:该方法属于 ...

  4. javaSE复习总结

    之前匆匆忙忙学完了java,后来又接着学习ee,然而,越是想要快一点最后反而会更慢一点.因为匆忙间 我几乎什么都没学会.在后面的学习中实在非常吃力.就把javase 的视频大部分又重新看了一遍.真的收 ...

  5. JavaSE复习总结之集合(Collection)

    Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...

  6. JavaSE复习_8 泛型程序设计

    今晚看了core Java的泛型部分,万万没有想到,当时看培训班视频入门的一带而过的泛型,有这样多的细节,整理了一下书里面提到的一些自认为的重点,方便以后观阅.由于是复习,一些基础知识跳过. △泛型类 ...

  7. JavaSE复习日记 : 接口

    /* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...

  8. JavaSE复习日记 : 抽象类

    /* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...

  9. JavaSE复习日记 : 算是个小前言吧

    /* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...

随机推荐

  1. css常用命名规则

    (一)常用的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrappe ...

  2. wpf的研究和反思

    WPF的研究和反思 目前是否适合使用wpf      WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET F ...

  3. unity替换mesh测试

    直接替换SkinnedMeshRender的Mesh,实现所谓断肢效果(不过最近发现,绑定多mesh似乎更好实现这样的效果.有时间准备写一篇): 只要不改变两个Mesh原始文件的层级,就不会出现权重的 ...

  4. MFCC常用类介绍

    http://www.cnblogs.com/lzmfywz/archive/2012/04/22/2465069.html CStatic CObject └CCmdTarget └CWnd └CS ...

  5. 让VS自动生成我们自己的注释

    1. 找到你VS的安装目录:C:\Program Files (x86)\Microsoft Visual Studio 11.0 2. 在VS安装路径下依次找到这些文件夹:\Common7\IDE\ ...

  6. 公共控件Listview

    ListView属性中,Items是行的总集合,Items集合中的每一个是一行,Items集合里面有ListViewItem集合,这个集合实例化:ListViewItem li=new ListVie ...

  7. Linux内核中的Kconfig、xx.defconfig、xx.config、Makefile

    什么是Kconfig.xx.defconfig.xx.config.Makefile Kconfig: 一个文本形式的文件,其中主要作用是在内核配置时候,作为配置选项. xx.deconfig: Li ...

  8. Python 2.7.9 Demo - ini文件的读、写

    ini文件 [weixin_info] hello = Nick Huang #coding=utf-8 #!/usr/bin/python import ConfigParser; cp = Con ...

  9. JLINK使用教程详解,以及与JTAG区别

    对于一个新手来说,一切都不容易. 而从头学起也是一件非常美好的事. 观看     调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试 ...

  10. VC++界面编程之--阴影窗口的实现详解

    转载:http://blog.csdn.net/rmxming/article/details/11661365 对于我们这些控件狂来说,窗口阴影也是一个必不可少的实现需求.虽说其没多大用,但对于增加 ...