Java由浅入深讲解继承下
作者:星鸦wyk 发布时间:2023-11-25 12:21:26
标签:Java,继承,概念
本篇紧接上一篇内容继续,还是从继承里的细节开始
1.代码块初始化
关于代码块的定义和使用因为之前已经进行过介绍,所以这里就不再赘述,我们所关注的点是父类和子类中的代码块在运行时候的先后顺序是怎样的
首先还是在父类以及子类中添加代码块,如下:
//父类
{
System.out.println("父类实例代码块");
}
static {
System.out.println("父类静态代码块");
}
public Plant() {
System.out.println("父类构造方法");
}
//子类
{
System.out.println("子类实例代码块");
}
static {
System.out.println("子类静态代码块");
}
public Tree() {
System.out.println("子类构造方法");
}
我们在main方法中实例化子类对象后来看一下结果:
静态代码块依旧是最先被执行的,然后是父类的实例代码块和构造方法,最后是子类的实例代码块和构造方法
静态代码块由于只执行一次,所以如果再实例化一次子类对象的话父类和子类的静态代码块都不会再执行
2.protected关键字
之前的访问修饰限定符中还遗留了一个protected,这里把这个坑填上,procted在包访问权限的基础上多了一个权限:不同包中的子类可以访问父类的成员
假设Plant和Tree分别在两个包中,那么Plant中protected修饰的成员依旧可以在Tree中使用super来进行访问
需要注意的一点:父类必须是用public修饰,否则访问权限不够,不同包的两个类根本无法构成继承关系
4个访问修饰限定符都讲完了,这里作一个总结:
访问范围 | private | default | protected | public |
同一包中的同一类 | √ | √ | √ | √ |
同一包中的不同类 | × | √ | √ | √ |
不同包中的子类 | × | × | √ | √ |
不同包中的非子类 | × | × | × | √ |
3.final关键字
final关键字同样是用来修饰类、方法以及变量的,作用如下:
修饰变量:成为常量,无法被修改
修饰方法:不能被重写
修饰类:不能作为父类被其它类继承
4.Java中允许的继承方式
单继承:A继承B
多层继承:A继承B,B继承C、C继承D......
不同类继承同一个父类:A继承B,C也继承B
但是Java中不允许一个类继承多个父类(即C++中的多继承)
Java继承的内容结束,后面就是多态的内容,完
来源:https://blog.csdn.net/qq_52989768/article/details/123976068
0
投稿
猜你喜欢
- 一、问题描述今天使用SDK Manager将Android SDK的版本更新到了Android 5.1的版本,eclipse创建androi
- 最近“全网域(Web Scale)”一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加“全网域”。但是究竟什么是全网
- 本文实例为大家分享了Java操作qq邮箱发送邮件的具体代码,供大家参考,具体内容如下今天尝试了使用QQ邮箱的POP3/IMAP/SMTP/E
- java * 的方法总结AOP的拦截功能是由java中的 * 来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该
- 线程中断机制提供了一种方法,用于将线程从阻塞等待中唤醒,尝试打断目标线程的现有处理流程,使之响应新的命令。Java 留给开发者这一自由,我们
- 1. 编写索引内容节点解释:settings:配置信息"number_of_replicas": 0 不需要备份(单节点
- 1.返回ModelAndView对象(.jsp)controller代码:package controller;import java.ut
- springboot启动失败的问题springboot版本是1.3.0.M1,连接的mysql版本为8,用spring-boot-start
- reduce()简介Reduce 原意:减少,缩小根据指定的计算模型将Stream中的值计算得到一个最终结果解释:reduce 操
- 自定义TypeHandler映射JSON类型为List1. 实体类这里只展示需要映射的字段,分别在所需映射的字段和实体类上添加注解。&nbs
- 介绍什么是ThreadLocal?ThreadLocal叫做线程变量,用于在多线程环境下创建线程本地变量。通俗的讲,ThreadLocal可
- 前言ps命令的作用是显示进程信息的。|符号,是个管道符号,表示左右两边两个命令同时执行。grep命令是查找(Global Regular E
- 有时候因为安全问题,需要把配置文件的中数据库用户名密码由明文改成密文,大多数其实是为了应付甲方而已。1.pom.xml引入依赖<dep
- mybatis的原身是ibatis,现在已经脱离了apache基金会,新官网是http://www.mybatis.org/。在研究Myba
- 前言Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expe
- jdk8之前 一、java.lang.Systemlong times = System.currentTimeMillis();
- 一、何为栈?栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称
- 详解java.lang.reflect.Modifier.isInterface()方法java.lang.reflect.Modifier
- 目录一、图示二、链表的概念及结构三、单链表的实现四、完整代码的展示一、图示二、链表的概念及结构 链表是一种物理存储结构上非连续存储结构,数据
- 一、输入输出流对象cout:标准输出流cerr:标准出凑 和cout(只是用于如果是错误时要输出的)cin :&nb