Java由浅入深讲解继承下

 更新时间:2022年04月26日 16:50:16   作者:星鸦wyk  
继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作

本篇紧接上一篇内容继续,还是从继承里的细节开始

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个访问修饰限定符都讲完了,这里作一个总结:

访问范围privatedefaultprotectedpublic
同一包中的同一类
同一包中的不同类×
不同包中的子类××
不同包中的非子类×××

3.final关键字

final关键字同样是用来修饰类、方法以及变量的,作用如下:

修饰变量:成为常量,无法被修改

修饰方法:不能被重写

修饰类:不能作为父类被其它类继承

4.Java中允许的继承方式

单继承:A继承B

多层继承:A继承B,B继承C、C继承D......

不同类继承同一个父类:A继承B,C也继承B

但是Java中不允许一个类继承多个父类(即C++中的多继承)

Java继承的内容结束,后面就是多态的内容,完

到此这篇关于Java由浅入深讲解继承下的文章就介绍到这了,更多相关Java继承内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解JAVA 抽象类

    详解JAVA 抽象类

    这篇文章主要介绍了JAVA 抽象类的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • spring boot环境抽象的实现方法

    spring boot环境抽象的实现方法

    在实际开发中,开发人员在编写springboot的时候通常要在本地环境测试然后再部署到Production环境,这两种环境一般来讲是不同的,最主要的区别就是数据源的不同。本文主要介绍了这两种,感兴趣的可以了解一下
    2019-04-04
  • Springmvc实现文件上传

    Springmvc实现文件上传

    这篇文章主要为大家详细介绍了Springmvc实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • springcloud eureka切换nacos的配置方法

    springcloud eureka切换nacos的配置方法

    这篇文章主要介绍了springcloud eureka切换nacos,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • java基于正则表达式实现时间日期的常用判断操作实例

    java基于正则表达式实现时间日期的常用判断操作实例

    这篇文章主要介绍了java基于正则表达式实现时间日期的常用判断操作,简单说明了正则表达式常用元字符含义并结合实例形式分析了java基于正则表达式针对常用日期时间格式的判断操作技巧,需要的朋友可以参考下
    2017-10-10
  • 深入探究Java线程与进程有哪些区别

    深入探究Java线程与进程有哪些区别

    这篇文章主要介绍了Java并发编程之线程创建,进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是一个实体,一个进程中至少有一个线程,下文更多相关内容需要的小伙伴可以参考一下
    2022-04-04
  • 如何在 Java 中实现一个 redis 缓存服务

    如何在 Java 中实现一个 redis 缓存服务

    为什么要使用缓存?说到底是为了提高系统的运行速度。将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度。下面我们来一起深入学习一下吧
    2019-06-06
  • Java实现的计算稀疏矩阵余弦相似度示例

    Java实现的计算稀疏矩阵余弦相似度示例

    这篇文章主要介绍了Java实现的计算稀疏矩阵余弦相似度功能,涉及java基于HashMap的数值计算相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Java中的ArrayList.trimToSize()方法详解

    Java中的ArrayList.trimToSize()方法详解

    这篇文章主要介绍了Java中的ArrayList.trimToSize()方法详解,前几天看了Java ArrayList,没有明白trimToSize()这个方法是什么意思,所以看了一下源码并且debug一下自己的一个例子,明白了其中的含义,需要的朋友可以参考下
    2023-11-11
  • Java 二分查找算法的实现

    Java 二分查找算法的实现

    这篇文章主要介绍了Java 如何实现二分查找算法,帮助大家更好的理解和学习Java 算法,感兴趣的朋友可以了解下
    2020-09-09

最新评论