△先默认初始化,在显示初始化,在构造函数初始化
△继承的弊端:代码的耦合性增加了.
△子类不能继承父类的构造方法.
△子类会拥有父类的私有成员变量,但是必须通过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. [HTML]网页开发学习笔记

    为了要开发一套教学使用的教师管理系统,(客户需求使用网页做教师控制端口)我便学习了一下HTML网页开发. 很不错的学习开发的网站:http://www.w3school.com.cn/index.ht ...

  2. 每日一九度之 题目1040:Prime Number

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6732 解决:2738 题目描述: Output the k-th prime number. 输入: k≤10000 输出: The k- ...

  3. android异步加载图片并缓存到本地实现方法

    图片过多造成内存溢出,这个是最不容易解决的,要想一些好的缓存策略,比如大图片使用LRU缓存策略或懒加载缓存策略.今天首先介绍一下本地缓存图片     在android项目中访问网络图片是非常普遍性的事 ...

  4. Unity-Animator深入系列---测试CrossFade和CrossFadeInFixedTime

    回到 Animator深入系列总目录 CrossFade是按照动画的自身时间进行混合.如果动画10秒,混合持续时间0.2,会在2秒后混合完成 CrossFadeInFixedTime是按照实际时间进行 ...

  5. SharePoint自动化系列——Add/Remove “Hold” from items

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 问题1: 1.如果SharePoint item被添加了hold,通过UI界面来对SharePoi ...

  6. 2016 Al-Baath University Training Camp Contest-1 D

    Description X is well known artist, no one knows the secrete behind the beautiful paintings of X exc ...

  7. 被指定为此窗体的 MdiParent 的窗体不是 MdiContainer。 参数名: value

    解决方案 添加this.IsMdiContainer  = true; 或者下面的方法

  8. .Net连接数据库(AOD.Net)

    用C#实现用户名登录---连接数据库,查询并判断是否存在用户名 一.链接类 1.添加DBConnection类 2构造 public class DBConnection { private stat ...

  9. 完成Adventure中的主方法

    package a; public interface CanSwim { void swim(); } package a; public interface CanFly { void fly() ...

  10. 关于HTTP GET请求的url中文参数编码

    场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码. 1. 发送请求,从浏览器中捕获到http的请求内容如下: Remote Address ...