Java学习之路 —— Day3(内部类、枚举、泛型、API)

文章目录

  • 1. 内部类
  • 2. 枚举
  • 3. 泛型

1. 内部类

成员内部类
就是类中的一个普通成员,类似普通的成员方法、成员变量。(套娃)

public class Outer {
    public class Inner {
        private String name;
        public static String school;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Outer.Inner in = new Outer().new Inner();
        in.setName("jehan");
        Outer.Inner.school = "CQUPT";
        System.out.println(Outer.Inner.school + " " + in.getName());
    }
}

静态内部类
有static修饰的内部类,属于外部类自己持有。使用它时就像使用静态方法一样就行,只能访问外部类的静态成员,不能访问外部类的非静态成员。

匿名内部类(重点)
一种特殊的局部内部类;不需要为这个类声明名字。

  • 特点:匿名内部类本质就是一个子类,并会立即创建出一个子类对象;
  • 作用:用于更方便的创建一个子类对象;
  • 通常作为一个参数传递给函数

2. 枚举

枚举是一种特殊类。

  • 枚举类的第一行,只能写一些合法的标识符,多个名称用逗号隔开。
  • 这些名称,本质是常量,每个常量都会记住枚举类的一个对象。
  • 枚举类的构造器都是私有的,因此,枚举类对外不能创建对象。
  • 枚举类都是最终类,不可以被继承。
    在这里插入图片描述
public enum A {
    // 注意:枚举类的第一行必须罗列的是枚举对象的名称
    X, Y, Z;
    private String name;

    // 构造器都是私有的

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Main {
    public static void main(String[] args) {
        A a1 = A.X;
        System.out.println(a1);
    }
}

3. 泛型

这一块和C++差不多,都是尖括号里面声明变量类型。

不过定义的时候比C++简单,只需要在类名后面加尖括号就行了。

需要注意的是,泛型不支持基本数据类型,只支持对象类型(引用数据类型)。我们知道,java的引用数据类型是在堆中创建的对象,引用数据类型的变量实际上是一个指向对象的指针,通过这个指针可以访问对象的属性和方法,具体的有4大类:类、接口、数组、字符串

所以int这些基本数据类型就不行,但java提供了Integer这样的引用数据类型

public class MyArrayList<类型变量E, 类型变量T> {
	public boolean add(E e) {
		return true;
	}
}

泛型接口

修饰符 interface 接口名<类型变量, 类型变量, ...> {

}
修饰符 class 类名 implements 接口名<类型变量> {
	@Override
	...
}

泛型方法
泛型方法放泛型的位置有点不一样,是放到返回值前面。

修饰符 <类型变量> 返回值类型 方法名(形参) {
}

?在泛型中作为通配符,在使用时表示一切类型来使用
public static go(ArrayList<? extends Car> cars) {}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爆火的迅雷网盘推广,一手云盘app拉新推广渠道必备项目 学习资料

迅雷网盘是目前几个主流网盘拉新推广之一 都可以通过”聚量推客“申请 目前主流的为&#xff1a;夸克网盘拉新、uc网盘推广、迅雷网盘&#xff0c;但是由于阿里的原因 夸克目前不对外开放名额&#xff0c;需要等待&#xff0c;取而代之主流的云盘推广就是迅雷网盘了 聚量推客…

linux基础知识

一、Linux权限详解 Linux的文件权限有以下设定&#xff1a; Linux下文件的权限类型一般包括读&#xff0c;写&#xff0c;执行。对应字母为 r、w、x。 Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组&#xff08;粒度&#xff09;&#x…

bulldog靶机复现

注&#xff1a;个人笔记&#xff0c;有点简陋&#xff0c;仅供参考。 准备&#xff1a;把kali和靶机设置为同一网段&#xff08;NAT&#xff09; 信息搜集 主机扫描 nmap -sP -T4 10.4.7.0/24 扫描出靶机IP为&#xff1a;10.4.7.134 扫描端口、服务 nmap -A -T4 -p- 10.4.…

VRRP(虚拟路由器冗余协议)标准协议工作机制与优势介绍

VRRP标准协议 文章目录 VRRP标准协议简介VRRP标准协议基本概念VRRP标准协议工作机制主备选举主备倒换非抢占模式抢占模式 VRRP标准协议技术优势VRRP典型组网单备份组主备备份多备份组负载分担 推荐阅读 VRRP标准协议简介 VRRP&#xff08;Virtual Router Redundancy Protocol…

怎么阅读芯片源代码(rtl)

part one 主要的原则。 一个rtl可以是这样的&#xff1a; 经常大家习惯于算法和数据结构。对于设计的部分&#xff0c;落实不一定多。 另外一个rtl也可以是这样的&#xff1a; 所以从不同的层面来讲&#xff0c;一个Rtl有不同的表述。 首先大概把所有的部分浏览一遍&#x…

碳交易机制下考虑需求响应的综合能源系统优化运行(附带Matlab程序)

碳交易机制下考虑需求响应的综合能源系统优化运行&#xff08;附带Matlab程序&#xff09; 仿真平台&#xff1a;MATLABCPLEX 使用的是yalmipcplex求解器完成求解 资源地址&#xff1a; 碳交易机制下考虑需求响应的综合能源系统优化运行&#xff08;附带Matlab程序&#xff09…

CSRF 漏洞实战

CMS创建新用户 方法&#xff1a;攻击者可以利用 XSS 触发 CSRF 攻击。因为&#xff0c;可以利用 JS 发送 HTTP 请求。经过研究受害网站的业务流程&#xff0c;可以构造如下代码&#xff1a; 代码&#xff1a; <script> xmlhttp new XMLHttpRequest(); xmlhttp.open(&qu…

安装DevEco Studio时,遇到的ohpm报错(解决)

如上图所示&#xff0c;我试了网上的各种办法&#xff0c;包括官网的文档&#xff0c;运行init.bat也不行。 接下来我说一下我的办法&#xff1a; 我从官网下载安装包后&#xff0c;将bin文件添加在了环境变量里&#xff08;最终安装的位置&#xff0c;但是因为他会自己下载所…

【运维必看】2023年常见运维面试题汇总,助你拿下offer!

IT运维面试问题总结-基础服务、磁盘管理、虚拟平台&#xff01; 基础服务—— 1、简述Linux中常见的系统服务&#xff0c;其作用分别是&#xff1f; 常见的系统服务及其作用有&#xff1a; ●NTP/Chrony&#xff1a;用于时钟同步&#xff1b; ●DHCP&#xff1a;动态主机配…

MySQL(16):变量、流程控制与游标

变量 在MySQL数据库的存储过程和函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据。 在 MySQL 数据库中&#xff0c;变量分为 系统变量 以及 用户自定义变量 。 系统变量 变量由系统定义&#xff0c;不是用户定义&#xff…

软件工程分析报告04详细设计说明书——基于Paddle的肝脏CT影像分割

基于Paddle的肝脏CT影像分割系统的详细设计说明书 一、引言 本文档是基于Paddle的肝脏CT影像分割系统的详细设计说明书。本文档旨在对系统的设计、实现以及测试等方面进行详细的阐述&#xff0c;以便于开发人员进行开发和测试工作。 二、概述 肝脏CT影像分割系统是一种医疗影像…

Learning reliable modal weight with transformer for robust RGBT tracking

论文&#xff1a;《Learning reliable modal weight with transformer for robust RGBT tracking》 针对问题&#xff1a;局部线性匹配容易丢失语义信息 解决方法&#xff1a;为了增强特征表示和深化语义特征&#xff0c;分别设计了一种基于改进的Resnet-50的模态权值分配策略…

MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出

文章目录 Filter Designer的打开滤波器参数设置生成matlab代码生成XILINX Coefficient(.COE) File实际浮点数的导出官方使用教程 Filter Designer的打开 打开Filter Designer&#xff1a; 方法一&#xff1a;命令行中输入Filter Designer&#xff0c;再回车打开。 方法二&…

漏洞-任意账号注册

一漏洞介绍 1.未验证邮箱/手机号 情景&#xff1a;应用为了方便用户记录用户名&#xff0c;使用邮箱和手机号作为用户名&#xff08;因此很多应用在注册的时候就要求用户填写&#xff0c;多数时候都会给用户发送激活信息&#xff0c;激活后才能登录&#xff09; 缺陷&#xff…

配置DHCP服务器

概述 DHCP(Dynamic Hast Configuration Protocal)就是动态主机配置协议&#xff0c;可以自动配置主机的IP地址、子网掩码、网关及DNS等TCP/IP信息。以DHCP可以有效地降低客户端IP地址配置的复杂度和网络的管理成本。如果路由器能够转发DHCP请求&#xff0c;只需要在一个子网中…

振南技术干货集:深入浅出的Bootloader(4)

注解目录 1、烧录方式的更新迭代 1.1 古老的烧录方式 (怀旧一下&#xff0c;单片机高压烧录器。) 1.2 ISP 与ICP 烧录方式 (还记得当年我们玩过的 AT89S51?) 1.3 更方便的 ISP 烧录方式 1.3.1串口 ISP &#xff08;是 STC 单片机成就了我们&#xff0c;还是我们成就了…

Kubernetes介绍以及Kubernetes快速部署

Kubernetes介绍以及Kubernetes快速部署 文章目录 Kubernetes介绍以及Kubernetes快速部署1.Kubernetes介绍&#xff1a;1.1.Kubernetes简介1.2. Kubernetes应用部署方式演变1.3.Kubernetes功能1.4.Kubernetes工作原理1.5.工作流程1.6.优缺点 2.Kubernetes环境部署2.1.环境说明2.…

EMC-4641C运动控制器固件升级

EMC-4641C运动控制器固件升级 更新前查看运动控制器固件版本 点击打开ESMTPTest_X64R.exe程序 点击搜索&#xff0c;程序自动选择IP为192.168.0.135的运动控制器&#xff08;实际操作时候可能会因为现场情况&#xff0c;IP会有细微不同&#xff09; 点击Connest 等待几秒后在…

将Soildorks模型导入PreScan

首先将Soildworks模型导入到SketchUP中&#xff0c;导入方法如下&#xff1a; 在Soildworks中将模型另存为IFC 2x3 模型 在选项中将单位改成米 在SketchUP中文件选择导入 ifc 文件即可 然后在SketchUP中定义坐标轴 SketchUP中红色的轴为X&#xff0c;绿色的轴为Y&#xff0c;蓝…

一个车厢号码识别算法(2005年的老程序----ccc)

一个车厢号码识别算法&#xff08;2005年的老程序----ccc&#xff09; 2023-09-18 ccc 程序的识别效果 对图中的车厢号码部分用上下两条线限定分为&#xff0c;然后进行识别。 从上面的识别效果可以看出&#xff0c;识别算法具有一定的鲁棒性&#xff0c;能够适应车厢号码的各…