JAVA零基础学习笔记07

一、继承
当多个类需要建立相同的属性、方法时,可以将共性提取出来构建父类(基类/超类),多个类作为子类继承父类即可。
使用 extends 构建父类和子类,
父类代码可以传给子类,
子类继承了父类的代码,只要写自己独有的就可以,
去掉了重复的代码,减少了代码总量。
注意:extends
子类不是父类的子集
子类是父类的扩展
在这里插入图片描述

二张图解:
父类:
在这里插入图片描述
子类:
这里子类调用了继承自父类的成员属性。
在这里插入图片描述
注意:
在这里插入图片描述
这个访问权限在笔记06提及过。

二、单继承与多层继承
一个父类可以有多个子类,
一个子类不允许有多个父类。
可以存在 父类1 - 父类2 - 子类 这种情况。

三、方法的重写
在这里插入图片描述

子类在调用父类的方法时,可以重写方法,
但只能重写方法体,即 { /这部分/ }
步骤:
1、建立如下一图父类 Person
在这里插入图片描述
2、建立子类 Student extends Person,
然后 alt + / ,选择重写 showInfo 方法,然后在 { } 中写上修改后的代码,
在 main 方法中
提前创建子类对象 . 方法名,原先来自父类 Person ,
现在来自子类 Student .
在这里插入图片描述
方法的重载:一个类中有多个同名方法;
方法的重写:子类修改父类的方法并且覆盖。
这里的重写覆盖:
子类对象 . 方法名 原先使用的父类方法变成子类的方法;
但仍然可以使用父类对象 . 方法名来使用未修改的父类方法

重写要求:
第二行:重写后的方法访问权限不允许比父类严格。
(之前提到的4种访问权限)
第三行:重写前后 static 或 非static 保持一致。
在这里插入图片描述
记住下面这张图:
父类与子类在同一个包下,子类不能调用父类的 private ;
父类与子类不在同一个包下,
子类不能调用父类的 private 和 default(缺省,不填);
在这里插入图片描述

四、关键字 super

用法:
在这里插入图片描述
注意第二点:super 可以对父类、父类的父类等一直向上进行操作。

在调用父类的构造方法时,需要注意如下图三点
在这里插入图片描述
1、举例说明,如下
在父类中写一个显式无参构造方法;
父类
在这里插入图片描述
然后在子类中建立 main 方法,new 子类对象。
子类
在这里插入图片描述
输出结果为:自动访问父类的无参构造方法。

2、父类中没有无参构造,只存在 有参构造,
此时报错,如下一图:
在这里插入图片描述
必须同时在子类中建立相同格式的构造方法,并调用父类的构造方法写在第一行。
如下二图:
父类
在这里插入图片描述
子类
在这里插入图片描述

五、this 与 super 区别

在这里插入图片描述
注意:经过实践,this调用方法,本类中没有,也能调用父类的方法。

六、java对象的实例化过程

图解:
在这里插入图片描述
在这里插入图片描述
留个问题:这里说的构造方法进栈出栈,似乎是指:构造方法在进行变量赋值等操作时要在栈内存中进行。

七、多态性

图解:
多态性(1)
在这里插入图片描述
多态性(2)
在这里插入图片描述
具体看如下代码:
在这里插入图片描述
问题:引用对象 p 引用哪个实例对象?
回答见下图:
在这里插入图片描述
多态性(3)
在这里插入图片描述
虚拟方法调用:
Person 为父类,Student 为子类。
Person e = new Student();
在这里插入图片描述
e.getInfo() 调用的是 Student 类的getInfo() 方法的原因:
e在栈内存中,new Student() 对象在堆内存中,
e 引用 new Student() 。
java的方法运行在栈内存中,在运行方法时会动态进栈和出栈。
这句也对本笔记第六点末尾问题的回答。

多态小结:
在这里插入图片描述
在这里插入图片描述
多态性应用举例:
下图这种是之前提过的匿名对象的一种用法,暂时没接触过很多。
在这里插入图片描述

八、instanceof 操作符
在这里插入图片描述
代码如下:
第三行是在检验是否为父子类
在这里插入图片描述
输出结果为:
true
true
true

九、Object 类

Object类是根父类,是所有类最上层的父类
在这里插入图片描述
用代码举例如下一图:
在这里插入图片描述
Object类中的主要方法:
在这里插入图片描述
1、第一种:就是 new Object();
2、第二种:比较引用对象是否是同一个
图解如下一图:
在这里插入图片描述
输出:false
若在比较前写 : e = p;
则输出:true
这是因为,在栈内存中,p把堆中的引用对象传给了e,
所以 p、e 引用同一个对象。
3、第三种:取得哈希值,目前不知道是什么。
在这里插入图片描述
4、第四种:就是打印内存地址
在这里插入图片描述
扩展:由于Object是所有类的父类,所以在创建引用对象时,可以使用如下格式:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值