JAVA基础笔记(复习)- 继承
2014-01-14 19:57
489 查看
继承的好处: 1、提高了代码的复用性 2、让类与类之间产生了关系,为多态提供了前提 简单的继承图解: Java中支持单继承,不直接支持多继承,但对c++中的多继承机制进行了改良(多重继承和多实现) 单继承:一个子类只能有一个直接父类 多继承:一个子类可以有多个直接父类 Java为什么不支持多继承? 因为如果两个父类中有相同的方法时,jvm不知道运行哪一个。会产生不确定性。 但是支持多重继承:B 继承 A,C 继承 B,间接的实现了多继承 这样就会出现继承体系。 当要使用一个继承体系时: 1、查看该体系中的顶层类,了解该体系的基本功能 2、创建体系中的最子类对象,完成功能的使用。 什么时候定义继承呢? 当类与类之间存在着所属关系的时候,就定义继承。如:Xxx是yyy中的一种,xxx extends yyy 所以判断所属关系,可以简单看,如果继承后,被继承的类中的功能,都可以被该子类所具备,那么继承成立。如果不是,不可以继承。 成员变量: 当本类的成员和局部变量同名用this区分。 当子父类中的成员变量同名用super区分父类 This与super的用法类似 This代表本类对象的引用,super:代表一个父类空间。 成员函数: 特点:当子父类中出现成员函数一模一样的情况,会运行子类的函数,这种现象,称为覆盖操作 函数两个特性: 1、重载 :同一个类中() 2、覆盖 :子父类,覆盖也称为重写,覆写 覆盖注意事项: 1、子类方法覆盖父类方法时,子类权限必须要大于等于父类权限 2、静态只能覆盖静态
(在子类构造对象时,发现:访问子类构造函数时,父类也运行了。) 原因是:在子类的构造函数中第一行有一个默认的隐式语句,super(); 子类的实例化过程: 子类中所有的构造函数默认都会访问父类中的空参构造函数
因为:子类继承了父类,获取到了父类中的内容(属性),所以在使用内容之前要先看父类是如何对自己的内容进行初始化的。 如果父类中没有空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。 注意:super语句必须要定义在构造函数的第一行,因为,父类的初始化要先完成 注意:如果使用了this()调用了本类构造函数时,那么super就没有了。因为super和this都只能定义在第一行 如果想要同时使用 this() 和super(),可以间接的分开调用本类其他构造函数 子类实例化过程 ---- 图解
|
一个对象实例化过程:
Person p = new Person();1、JVM会读取指定的路径下的Person.class 文件,并加载进内存
(并会先加载Person的父类(如果有直接的父类的情况下))
2、在堆内存中开辟空间,分配地址。
3、并在对象空间中,对对象中的属性进行默认初始化
4、调用对应的构造函数进行初始化
5、在构造函数中,第一行会先调用父类中的构造函数进行初始化。
6、父类初始化完毕后,再对子类的属性进行显示初始化
7、再进行子类构造函数的特定初始化
8、初始化完毕后,将地址赋值给引用变量
相关文章推荐
- Java基础复习笔记系列 四 数组
- JAVA学习笔记(复习)-----2、 JAVA基础(一)
- Java基础复习笔记12Java自定义注解Annotation的使用
- 大四Java复习笔记之Java基础
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- 黑马程序员 JAVA基础学习笔记 继承等
- Java基础笔记二继承、异常、多态
- 复习java基础笔记
- Java基础知识复习笔记(二)
- Java基础:Day09笔记内容 (继承)
- java复习笔记4:封装,继承,多态
- 笔记整理(java基础四-----面向对象---继承)
- java基础内容笔记--继承(2)
- Java基础知识复习笔记(一)
- java 从零开始,学习笔记之基础入门<重载_覆盖_继承>(十)
- JAVA学习笔记27——编程基础和面向对象总复习
- Java基础复习---继承
- Java基础复习笔记系列之 常用类
- Java基础学习笔记七 Java基础语法之继承和抽象类
- 【黑马程序员】方法、数组、面向对象、封装、继承——Java复习笔记