Java—泛型、内部类、多继承

news2024/9/21 14:29:04

文章目录

  • 泛型
      • 1.泛型是什么,使用泛型的好处
      • 2.泛型中的限定通配符和非限定通配符
      • 3.泛型擦除
  • 内部类
    • 多继承
      • 多继承使用:

———————————————————————————

泛型

1.泛型是什么,使用泛型的好处

​ 泛型就是把类型参数化,在编译的时候才确定具体的参数。

​ 比如在 jdk1.5之前没有泛型的时候,我们使用ArrayList集合,存了一个String类型的字符串,又存了一个Integer类型的数字,取出的时候都要强转一下。但是jdk1.5有了泛型以后:

①:确保了我们的类型安全,类编译的时候。会进行泛型检查,如果一个集合被声明为String 类型,那么它往该集合存取数据的时候就会

对数据进行判断,从而避免存入或取出错误的数据。在编译的时候就可以检查出来因为类型不正确导致的异常(ClassCastException)

②:泛型只存在于编译阶段,而不存在于运行阶段,在编译后的 class文件中跟不使用泛型时写的代码几乎一致,因为在编译器编译的时候会通过类型擦除,去掉类型参数。

2.泛型中的限定通配符和非限定通配符

限定通配符对类型进行了限制,有两种限定通配符,一种是<? extends T>它通过确保类型必须是T的子类来设定类型的上限;

另一种是<? super T>它通过确保类型必须是T的父类来设定类型的下界。泛型类型必须用限定内的类型来进行初始化,否则会导致编译错误。

3.泛型擦除

首先泛型是jdk5之后加入的特性,泛型的内部是通过擦除来实现的。比如说我们在list集合里放入一个Integer类型的数据,我们执行一个list.add(10)的操作,在java编译的时候,实际上添加的类型是object的。当我们执行get方法取值的时候,编译器还会做一个类型强转的操作,如果接受的类型是int的话,还会做一个自动拆箱的操作。—java语法糖。

内部类

  • 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。
  • 内部类可以使用外部类定义的对象属性,外部类中,private修饰的变量,在内部类也可以使用
  • 外部类有的东西,内部类都可以写
  • 内部类的方法可以使用外部类的变量
  • 内部类的方法只能在定义内部类的区域使用,另外新建一个文件,是无法访问到的

广泛意义上的内部类一般来说包括这四种:成员内部类局部内部类匿名内部类静态内部类

  • 成员内部类

成员内部类看起来像是外部类的一个成员,只有成员内部类才能加static变成静态内部类。

外部类也可以访问内部类的所有成员变量和方法(包括private),必须先创建一个成员内部类的对象来访问

  • 局部内部类

局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。

  • 匿名内部类

匿名内部类是唯一一种没有构造器的类。大部分匿名内部类用于接口回调。匿名内部类在编译的时候由系统自动起名为Outter$1.class。一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。比如 :new Runnable(){ @override public void run() {}}

  • 静态内部类
  • 它的创建是不需要依赖于外围类的对象
  • 它不能使用任何外围类的非static成员变量和方法(因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象)
  • 静态内部类内允许有static属性、方法;
  • 静态内部类是指被声明为static的内部类,可不依赖外部类实例化;而非静态内部类需要通过生成外部类来间接生成。

总结:
在这里插入图片描述

多继承

在静态的方法中使用非静态的方法是无法实现的,静态是属于类的,
java的继承是单继承
内部类可以实现多继承
——>如下图:
在这里插入图片描述

多继承使用:

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

骰子游戏-第11届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第94讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

Python源码剖析1-整数对象PyIntObject

1、PyIntObject 对象 [intobject.h] typedef struct {PyObject_HEADlong ob_ival; } PyIntObjectPyIntObject是一个不可变&#xff08;immutable&#xff09;对象。Python内部也大量的使用整数对象&#xff0c;我们在自己的代码中也会有大量的创建销毁整型对象的操作&#xff…

霍夫曼树:霍夫曼编码(Huffman Tree:Huffman Coding)

预计阅读时间&#xff1a;10分钟 一、简介 霍夫曼树常处理符号编写工作。根据整组数据中符号出现的频率高低&#xff0c;决定如何给符号编码。如果符号出现的频率越高&#xff0c;则给符号的码越短&#xff0c;相反符号的号码越长。 相关术语 路径&#xff1a;从书中一个节点…

Docker安装可视化管理器Portainer

Docker安装可视化管理器Portainer Portainer 提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm 集群和服务等集中管理和操作、登录用户管理和控制…

Linux/Windows Redis的下载与安装

Redis简介 参考视频教程: https://www.bilibili.com/video/BV13a411q753?p143 Redis下载与安装 Windows版 下载地址: https://github.com/microsoftarchive/redis/releases Linux版下载地址: https://download.redis.io/releases/ 1. Window版本 1.1 redis下载 官网下载…

用ACL实现防火墙功能

目录 实验目的&#xff1a; 实验所需软硬件 实验步骤&#xff1a; 1、按以下拓扑接好线路。 2、配置好设备的IP地址和静态路由&#xff0c;使得所有设备可以互通。&#xff08;配置截图&#xff09; PC2 PC0 Router0 Router1​编辑 Server 3、测试各PC/服务器互联状…

基于KubeSphere图形编辑面板构建微服务项目的DevOps 系统

文章目录相关文章部署过程准备工作创建 DevOps 项目创建凭证创建流水线编辑流水线JAVA后端微服务拉取源码构建源码构建镜像推送镜像部署项目VUE前端拉取源码构建源码构建镜像推送镜像部署项目运行流水线查看流水线详情完整流水线脚本微服务后端VUE前端参考相关文章 kubernetes…

Grafana+Prometheus打造运维监控系统(一)-安装篇

1. Prometheus、Grafana介绍 Prometheus是一个开源的系统监控和报警系统&#xff0c;Grafana 是一个开源的监控数据分析和可视化套件&#xff0c;利用GrafanaPrometheus组合&#xff0c;打造运维日常的各种指标监控以及数据可视化。 2. Prometheus 2.1 下载 访问&#xff1…

专利-分析方法总结

目录 一、专利分析的意义 二、专利分析的方法&#xff1a; 2.1、行业专利信息分析 2.1.1、专利技术发展趋势分析 2.1.2、专利区域分布分析 2.1.3、专利相关人分析 2.1.4、专利技术主题分析 2.1.5、技术发展路线分析 2.1.6、专利技术功效分析 2.1.7、专利运营分析 3.…

node环境的搭建

一、node的安装&#xff08;可以去文末直接安装nvm管理器&#xff0c;就不用配置了&#xff09; 1 下载 | Node.js,也可以下载以往版本,window是以msi结尾的文件 2 安装,直接一直安装就行,如果有之前安装的版本,先进行卸载,然后再进行安装 3 安装完成后查看版本号 node -vnp…

Linux下文件目录权限管理chmod, chown, chgrp,umask命令使用总结

在Linux系统下常用的文件目录权限管理命令有chmod, chown, chgrp,umask&#xff0c;一直以来都在用&#xff0c;但是没有太注意它们的区别&#xff0c;今天就在这篇文章做个总结。 目录 1. chmod 2. chown 3. chgrp 4. umask 1. chmod 作用&#xff1a;修改某个目录或文件…

C语言实现学生管理系统(顺序表版)

前言 设计知识 使用语言&#xff1a;C语言 数据结构类型&#xff1a;顺序表 内容导图 效果展示 内容目录前言设计知识内容导图效果展示静态管理系统菜单的实现选择功能实现静态开辟空间实现增删功能增加功能实现删除功能实现实现查找功能实现修改功能实现排序功能动态管理系…

rollup打包工具快速入门

0.开始 教学视频出处 https://www.bilibili.com/video/BV1w84y1z77V?p3&spm_id_frompageDriver&vd_source0f7f337dd5a99bb975b88a48ae1b3711 日期&#xff1a;2022/12/3 rollup目前版本&#xff1a; "rollup": "^3.5.1"1.rollup概述 官网 http…

N32G45之串口+DMA数据收发

N32G45之串口DMA数据收发 1.串口简介   通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信&#xff0c;也支持LI…

【云原生】nacos权限制认证

鉴权 服务端如何开启鉴权 非Docker环境 按照官方文档配置启动,默认是不需要登录的&#xff0c;这样会导致配置中心对外直接暴露。而启用鉴权之后&#xff0c;需要在使用用户名和密码登录之后&#xff0c;才能正常使用nacos。 开启鉴权之前&#xff0c;application.properti…

0115 查找算法Day4

剑指 Offer 03. 数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1&#xff1a; …

Linux-CPU之平均负载

一般我们觉得系统变慢了&#xff0c;都会执行 top 或者 uptime 命令&#xff0c;来了解系统的负载情况。 uptime11:29:06 up 0 min, 2 users, load average: 1.21, 0.29, 0.10// 当前时间 // 系统运行时间 // 正在登录用户数 //1 分钟、5 分钟、15 分钟的平均负载概念&…

补知识点:Stream API

一、创建Stream 首先创建Stream的话&#xff0c;有四种创建方式&#xff1a; 注&#xff1a; 第一种集合的方式是最常用的 package com.atguigu.gulimall.gateway;import com.atguigu.gulimall.streamapi.Employee; import com.atguigu.gulimall.streamapi.EmployeeData; impo…

【应用】Docker

DockerDocker 的安装基本安装流程配置镜像加速Docker 常用命令镜像相关命令容器相关命令DockerfileDockerfile 常用指令Dockerfile 简单使用案例Dockerfile 构建 java 项目镜像Docker ComposeDocker compose 基本参数services 配置参数Docker 的安装 基本安装流程 使用虚拟机…

Linux JDK8下载安装

JDK安装 整体步骤介绍 操作步骤: 1 查看自己linux版本位 getconf LONG_BIT(64位) 2. 下载jdk的安装包 这里提供三种方法下载: (以jdk-8u171-linux-x64.tar.gz为例) 2.1 官网下载jdk: 官网: https://www.oracle.com/downloads/ jdk最新版本下载: https://www.oracle.com…