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


猜你喜欢
- 本文实例为大家分享了Unity3D实现批量下载图片功能的具体代码,供大家参考,具体内容如下下一篇文章试试用线程下载代码如下using Sys
- 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:
- 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类。由于所有的类都继承在Object类,因此省略了ex
- Android EasyPlayer声音自动停止、恢复,一键静音等功能我们在开发播放器时,可能会需要静音或者降低音量的功能。比如说某款音乐播
- Java数组声明、创建、初始化一维数组的声明方式:type var[]; 或type[] var;声明数组时不能指定其长度(数组中元素的个数
- 1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set。Collection
- Parcelable优点:google专门为安卓写的序列化接口性能好,内存开销小,效率高,写起来复杂缺点:各个机型可能有差异,Parcela
- 使用filter对request body参数进行校验@Slf4jpublic class ParameterCheckServletReq
- 对上次的三个问题的个人理解: 1) 程序首先是从main函数开始执行的,假设main 函数不是 static ,就要先实例化这个类,然后调用
- 本文实例为大家分享了android密码输入框效果展示的具体代码,供大家参考,具体内容如下老规矩,先看效果;这是现在商城类app中很常见的支付
- 面向对象思想之封装或许大家都听说过java是纯面向对象语言,面向对象思想也就是我们常说的OOP,我们听说最多的思想就是继承,封装,多态,今天
- 具体实现过程不多说了,直接贴代码了。using System;using System.Collections.Generic;using
- 前言本文我们不去谈int、float、char等基本数据类型,而是用一般的类来说明。因为Java中可以直接通过 int varName 的方
- 在前面介绍的代码中有使用特性,这些特性都是Microsoft定义好的,作为.NET Framework类库的一部分,许多特性都得到了C#编译
- public class LogHelper { &nbs
- 前言:C# 10 对于 Lambda 做了很多的优化,我们可以在 C# 中更加方便地使用委托和 Lambda 了,下面就来看一些示例1、Na
- 什么是异步调用?异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等
- SpringBoot控制配置类加载顺序@Configuration配置被加载进容器的方式大体上可分为3种手动:构建ApplicationCo
- 一、分布式锁使用场景:代码部署在多台服务器上,即分布式部署。多个进程同步访问一个共享资源。二、需要的技术:数据库:mongojava:mon
- 完全属于自己的新闻展示平台,展示给大家,希望大家喜欢。一、新闻的数据库的构建脚本代码如下:(使用的mysql5.0 数据库)SET SQL_