4月4号总结

java学习

一.接口

1.介绍

定义接口需要使用到关键字interface去定义接口。

格式如下:

类与接口的关系不是继承,而是实现,用关键字 implements ,格式如下:

这个类去实现接口,其中的关系就相当于,接口是类的“干爹”,因为类可以实现多个接口,而继承虽然可以多层继承,但是父类只能有一个,而接口作为“干爹”的关系可以有很多个。

一个类可以同时继承父类,也可以同时实现多个接口。

但是要分清楚主次关系,当亲爹与干爹有相同的方法名时,调用子类的方法会优先调用亲爹的方法。

public class test {
    public static void main(String[] args) {
        B.run();
    }
}


interface A {
static void run(){
    System.out.println("我是干爹");
}
}

class D{
    static void run()
    {
        System.out.println("我是亲爹");
    }
}

class B extends com.learn.java.D implements A{

}

2.特点

接口里面不能有成员变量,它会默认加上 public static final。

我们在定义的时候一定要赋初值,不然会报错。

   在JDK7.0版本及其之前版本中,接口中仅支持公有的抽象方法:

                public abstract 返回值类型 方法名();  

        Δ事实上,接口中的方法默认就是公有抽象方法,因此在接口中定义抽象方法时,可以省略掉abstract关键字。

   从JDK8.0开始,接口中可以由默认方法和静态方法:

                默认方法——public default 返回值类型 方法名() {

                }

                静态方法——public static 返回值类型 方法名() {

                }

       需要注意的是,想定义默认方法必须在前面添加default关键字,因为接口中的方法如果你什么都不写,默认是公有的抽象的方法。默认方法可以有方法体,且不需要实现类去实现,其实就是我们平时见到的普通的成员方法。但是默认方法是可以被实现类重写的。default关键字只能在接口中使用,就算实现类要重写默认方法,实现类中重写后的方法也不能添加default修饰符,不然IDEA报错。

        JDK9.0以后,接口中可以有私有方法 :

                private 返回值类型 方法名() {

                }

注意:接口不能被实例化,也就是不能创建对象。

接口的子类可以是抽象类,也可以是普通类(需要实现接口的所有方法)。

二.泛型

定义:泛型是Java编程语言中的一个特性,它允许在编写类、接口和方法时使用参数化类型。通过使用泛型,可以使得代码更加灵活、可重用,并提高类型安全性。

如果不使用泛型,集合可以加入任意类型的数据。

  ArrayList k=new ArrayList();
        k.add("12");
        k.add("1212");
        k.add(new Student());
        k.add(12);

并且不会报错,但是我们在处理数据时,有时需要将数据统一类型,在输出时。

虽然在写代码时没有报错,但是在运行会出现错误,所以我们需要给集合定义一个我们需要的泛型

这时就会在外面写代码的时候就发现错误。

总之,泛型是Java编程语言中的一项重要特性,它提供了一种灵活、类型安全的方式来处理不同类型的数据,并提高了代码的可重用性和可读性。

下面是泛型的一些特点:

  1. 参数化类型:泛型允许在类、接口或方法中使用参数,这些参数可以用于定义类型。这样一来,类、接口或方法可以与不同的数据类型进行交互。

  2. 类型安全:泛型在编译时提供类型检查,确保类型的一致性。这可以在编译时捕获一些类型错误,而不是在运行时出现异常。

  3. 代码重用:泛型提供了一种通用的方法来编写代码,可以在不同类型之间进行重用。这使得代码更加模块化和可维护。

  4. 减少类型转换:使用泛型可以减少代码中的类型转换,因为编译器会确保类型的一致性,不再需要手动转换类型。

  5. 提高可读性:泛型使得代码更加清晰易懂,因为可以直观地看出代码中使用的数据类型。

  6. 集合框架支持:Java集合框架中的大部分类都使用了泛型,例如 ArrayList<T>HashMap<K, V> 等。这使得集合中存储的元素类型更加明确,提高了代码的安全性和可读性。

  7. 自定义泛型类、接口和方法:除了使用Java标准库中提供的泛型类型外,开发人员还可以创建自己的泛型类、接口和方法,以满足特定需求。

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

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

相关文章

DFS(基础,回溯,剪枝,记忆化)搜索

DFS基础 DFS(深度优先搜索) 基于递归求解问题&#xff0c;而针对搜索的过程 对于问题的介入状态叫初始状态&#xff0c;要求的状态叫目标状态 这里的搜索就是对实时产生的状态进行分析检测&#xff0c;直到得到一个目标状态或符合要求的最佳状态为止。对于实时产生新的状态…

不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式

大家好&#xff0c;我是知微&#xff01; 学习过单片机的小伙伴对GPIO肯定不陌生&#xff0c;GPIO &#xff08;general purpose input output&#xff09;是通用输入输出端口的简称&#xff0c;通俗来讲就是单片机上的引脚。 在STM32中&#xff0c;GPIO的工作模式被细分为8种…

gitcode 配置 SSH 公钥

在 gitcode 上配置SSH公钥后&#xff0c;可以通过SSH协议安全地访问远程仓库&#xff0c;无需每次都输入用户名和密码。以下是配置SSH公钥的步骤&#xff1a; 5分钟解决方案 用 OpenSSH公钥生成器 生成 公钥和私钥&#xff0c;私钥文件&#xff08;id_rsa&#xff09;下载&am…

算法设计与分析实验报告python实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、 实验目的 1&#xff0e;加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、排序算法…

python中如何使用help()

help()函数帮助我们了解模块、类型、对象、方法、属性的详细信息。 1、帮助查看类型详细信息&#xff0c;包含类的创建方式、属性、方法 >>> help(list) Help on class list in module builtins: class list(object)| list() -> new empty list| list(iterable)…

EmpireCMS:帝国源码cms网站搬家/数据迁移方法教程

帝国cms迁移数据&#xff0c;从一台旧的服务器把网站文件都搬迁到新的服务器&#xff0c;会涉及到附件&#xff0c;数据库信息等&#xff0c;很多人在搬迁的时候也会遇到各种问题&#xff0c;下面是小编整理的关于如何搬迁帝国cms数据的解决方案和思路&#xff0c;方便新手站长…

957: 逆置单链表

学习版 【C语言】 #include<iostream> using namespace std; typedef struct LNode {char data;struct LNode* next;LNode(char x) :data(x), next(nullptr) {} }LNode; void creatlist(LNode *&L) {int n;char e;cin >> n;LNode* p1, * p2;p1 L;for (int i…

Kubernetes的基础概念

目录 一、概述 二、为什么要用Kubernetes 2.1 从技术层面分析 2.1.1 问题解答 2.1.2 Docker等“裸容器”的不足 2.1.2.1 宕机无法自动恢复 2.1.2.2 健康检查不到位 2.1.2.3 部署、回滚、扩容问题 2.1.2.4 运维难 2.1.3 总结 2.2 从开发人员层面分析 2.2.1 分析日志 …

关于首助编辑高手

首助编辑高手是一款专为现代办公场景设计的集合软件&#xff0c;致力于提升用户的办公效率和便利性。它集成了多种实用的办公辅助工具&#xff0c;包括但不限于文档编辑、图片处理、PDF编辑、文本批量操作等功能&#xff0c;帮助用户轻松应对各种办公挑战。 首助编辑高手主要功…

ChatGPT 在做什么,为什么有效?

原文&#xff1a;What Is ChatGPT Doing … and Why Does It Work? 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 序言 这本简短的书试图从第一原理解释 ChatGPT 是如何工作的。在某种程度上&#xff0c;这是关于技术的故事。但它也是关于科学的故事。以及关于哲学…

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(五)- 向量加载和存储

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

七大开源基金会联合制定符合 CRA 法案的共同标准

欧洲议会上个月通过的《欧洲网络弹性法案》(CRA) 制定通用规范和标准 Apache 软件基金会、Blender 基金会、Eclipse 基金会、OpenSSL 软件基金会、PHP 基金会、Python 软件基金会 和 Rust 基金会 这项工作由 Eclipse 基金会牵头&#xff0c;旨在建立基于现有开源最佳实践的安全…

我认识的Git-Git工作流

WorkFlow 的字面意思&#xff0c;工作流&#xff0c;即工作流程。工作流不涉及任何命令&#xff0c;因为它就是一个规则&#xff0c;完全由开发者自定义&#xff0c;并且自遵守。 集中式工作流 集中式工作流以中央仓库作为项目所有修改的单点实体。相比svn缺省的开发分支trunk…

canvas+javascript 实现贪吃蛇游戏

引言 在当今数字化时代&#xff0c;编程已经成为一种极具创造力和趣味性的活动。通过编写代码&#xff0c;我们可以创造出各种各样的应用程序和游戏&#xff0c;其中包括经典的贪吃蛇游戏。本文将向您介绍如何使用 JavaScript 编程语言制作一个简单而有趣的贪吃蛇游戏&#xf…

韩顺平Java | C23 反射Reflection

需求&#xff1a;通过外部文件配置&#xff0c;在不修改源码情况下控制程序&#xff08;符合设计模式ocp开闭原则&#xff1a;不修改源码的情况下扩容功能&#xff09; ※反射机制 反射机制允许程序在执行期间借助于ReflectioAPI取得任何类的内部信息&#xff08;如成员变量&…

数据仓库的建立

实验 目的 熟悉Linux系统、MySQL、Hadoop、HBase、Hive、Sqoop、R、Eclipse等系统和软件的安装和使用&#xff1b; 了解大数据处理的基本流程&#xff1b; 熟悉数据预处理方法&#xff1b; 熟悉在不同类型数据库之间进行数据相互导入导出&#xff1b; 熟悉使用R语言进行可视化…

Windows虚拟主机如何创建数据库和导入数据库

看到有网友咨询想要知道Windows虚拟主机上如何使用数据库,由于是新手&#xff0c;对于主Plesk面板使用不是很了解,想要知道如何使用数据库&#xff0c;这边了解到他当前使用的是Hostease 的Windows 虚拟主机&#xff0c;首先&#xff0c;登录你的Plesk面板&#xff0c;这里有一…

【简单讲解下Tauri】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

QA测试开发工程师面试题满分问答5: 内存溢出和内存泄漏问题

概念阐述 内存溢出&#xff08;Memory Overflow&#xff09;和内存泄漏&#xff08;Memory Leak&#xff09;是与计算机程序中的内存管理相关的问题&#xff0c;它们描述了不同的情况。 内存溢出是指程序在申请内存时&#xff0c;要求的内存超出了系统所能提供的可用内存资源…

树(Tree) - 概念与基础

树的基本概念 树(Tree)是一种重要的数据结构&#xff0c;它在计算机科学中被广泛应用于各种算法和程序中。树是由节点(node)组成的层次结构&#xff0c;其中每个节点都有一个父节点&#xff0c;除了根节点外&#xff0c;每个节点都有零个或多个子节点。树的一个关键特点是没有…