1.面向对象的特征二:继承
定义:
指一个对象直接使用另一对象的属性和方法。
好处:
1.提供代码的复用性。
2.让类与类直接产生了关系,给第三个特征多态提供了前提。
java中支持单继承。不直接支持多继承,但对C++中的多继承机制进行改良。
单继承:一个子类只能有一个父类。
多继承:一个子类可以有多个直接父类(java中不允许,进行改良,不直接支持,因为多个父类中有相同的成员,会产生调用不确定性,在java中是通过“多实现”的方法来体现的。
java支持多层(多重)继承。(例如C继承B,B继承A,就会出现继承体系。)
(废话一点:当要使用一个继承体系时,1查看该类中的顶层类,了解该体系的基本功能。2创建体系中的最子类对象,完成功能使用。)
什么时候定义继承?
当类与类之间存在所属关系的时候,就定义为继承。(xxx是yyy的一种; xxx extends yyy)
当本类的成员和局部变量同名用this区分。
当子父类中的成员变量同名用super区分父类。this和super的用法很相似。
this:代表一个本类对象的引用。
super:代表一个父类空间。2.函数的覆盖(override)
概念:当子父类中出现成员函数一模一样的情况,会运行子类的函数。
这种现象,称为覆盖操作。这是函数在子父类中的特性。函数两个特性:
1,重载。同一个类中。overload
2,覆盖。子类中。覆盖也称为重写,覆写。override覆盖注意事项:
1,子类方法覆盖父类方法时,子类权限必须要大于等于父类的权限。 (父类方法私有时不称为覆盖)
2,静态只能覆盖静态,或被静态覆盖。什么时候使用覆盖操作?
当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类中该功能的特有内容时,就使用覆盖操作完成.
子父类中的构造函数的特点
在子类构造对象时,发现,访问子类构造函数时,父类也运行了。
为什么呢?
原因是:在子类的构造函数中第一行有一个默认的隐式语句。 super();子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
为什么子类实例化的时候要访问父类中的构造函数呢?
那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的。所以子类在构造对象时,必须访问父类中的构造函数。 为了完成这个必须的动作,就在子类的构造函数中加入了super()语句。如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。同时子类构造函数中如果使用this调用了本类构造函数时,那么super就没有了,因为super和this都只能定义第一行。所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。
注意:supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。
一个对象实例化过程:
例如Person p = new Person();
1,JVM会读取指定的路径下的Person.class文件,并加载进内存, 并会先加载Person的父类(如果有直接的父类的情况下).
2,在堆内存中开辟空间,分配地址。
3,并在对象空间中,对对象中的属性进行默认初始化。
4,调用对应的构造函数进行初始化。
5,在构造函数中,第一行会先到调用父类中构造函数进行初始化。
6,父类初始化完毕后,再对子类的属性进行显示初始化。
7,再进行子类构造函数的特定初始化。
8,初始化完毕后,将地址值赋值给引用变量.图裂(步骤如下所示):
Java 基础入门随笔(11) JavaSE版——继承
时间: 2025-01-02 17:41:23
Java 基础入门随笔(11) JavaSE版——继承的相关文章
Java 基础入门随笔(2) JavaSE版
1.Java语言-关键字 关键字:被java语言赋予了特殊含义的词,特点是所有的字母都为小写. java涉及到的关键字整理: 用于定义数据类型的关键字 class interface byte short int long float double char boolean void 用于定义数据类型值的关键字 true false null 用于定义流程控制的关键字 if else switch case default while do for break continu
Java 基础入门随笔(9) JavaSE版
上节中写了一些static变量以及静态的方法的定义使用以及与非静态的差别,这节补充下: 如果在一个类中所有方法都为静态的,且无成员变量,这时候需要对对应的类进行限制该类无法创建对象,具体操作如下: private ArrayTool(){} //该类中的方法都是静态的,所以该类是不需要的创建对象的.为了保证不让其他成创建该类对象,可以将该类的构造函数私有化. 1.文档注释 利用java虚假机中的javadoc工具进行文档注释生成,利用代码中的文档注释进行生成. 注意: 1.每个编译单元(类文件)
Java 基础入门随笔(4) JavaSE版
上一节对于运算符有了大致的了解,这一节针对程序流程控制进行复习!程序流程控制包括顺序结构.判断结构(if).选择结构(switch).循环结构. 1.判断结构 ①if语句的第一种格式: if(条件表达式) { 执行语句: } ②if语句的第二种格式: if(条件表达式) { 执行语句: } else//否则 { 执行语句:
Java 基础入门随笔(3) JavaSE版
上一节写了一些运算符的注意事项,这节开头依然是对运算符的一些注意点的阐述! 比较运算符除了>.>=.<.<=.==.!=之外需要注意instanceof:检查是否是类的对象,例如:”Hello” instanceof String ,返回结果位true. 1.逻辑运算符 &(与)的运算特点:运算的两边只要有一个是false,结果肯定是false,只有两边都为true,结果才true: |(或)的运算特点:运算的两边只要有一个是true,结果肯定是true,只有两边都为fal
Java 基础入门随笔(5) JavaSE版
1.函数 函数就是定义在类中具有特定功能的一段独立小程序,也称为方法. 定义函数的格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...) { 执行语句; return 返回值; } 特点:①.定义函数可以将功能代码进行封装,便于对该功能进行复用. ②.函数只有被调用才会被执行. ③.函数的出现提高了代码的复用性. 特殊情况: 功能没有具体的返回值,返回值类型
Java 基础入门随笔(6) JavaSE版
1.数组 概念:同一种类型数据的集合.其实就是数组就是一个容器. 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式: ①. 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 例:int[] arr = new int[5]; ②.元素类型[] 数组名 = new 元素类型[]{元素,元素,....}; 例:int[] arr = new int[]{3,5,1,7}; 或者 int[] arr = {3,5,1,7}; 常见异常: ①.ArrayIndexO
2015年最新Android基础入门教程目录(完结版)
2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构
2015年最新Android基础入门教程目录(临时版)
2015年最新Android基础入门教程目录(临时版) 标签(空格分隔): Android基础入门教程 前言: 嗯,昨晚又给人盗号了,博客上被发表了十几篇黄贴-然后目录给管理误删了,再发一次 后来协商后发现实被设密保问题了,建议各位用csdn的朋友密保自己设置一波~ 密保问题已修改回来了,应该不会再被盗号了-人怕出名猪怕壮哈~下次如果发现博客被封 告知下小猪,如何很急的话可以先到w3c鸟巢菜鸟教程上看Android基础入门教程 经过站长FK进行排版的,可能阅读体验会比csdn好很多!内容基本是同
Java基础入门 传智播客pdf
下载地址:网盘下载 内容简介 <Java基础入门>从初学者的角度详细讲解了Java开发中重点用到的多种技术.全书共11章,包括Java开发环境的搭建及其运行机制.基本语法.面向对象的思想,采用典型翔实的例子.通俗易懂的语言阐述面向对象中的抽象概念.在多线程.常用API.集合.IO.GUI.网络编程章节中,通过剖析案例.分析代码结构含义.解决常见问题等方式,帮助初学者培养良好的编程习惯.最后,讲解了Eclipse开发工具,帮助初学者熟悉开发工具的使用. <Java基础入门>附有配套