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标准库中提供的泛型类型外,开发人员还可以创建自己的泛型类、接口和方法,以满足特定需求。

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

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

相关文章

Python 使用matplotlib创建各种静态、动态、交互式和3D图表的功能

在Python中&#xff0c;你可以使用各种库来创建和显示图表。其中&#xff0c;最常用的库之一是matplotlib&#xff0c;它提供了创建各种静态、动态、交互式和3D图表的功能。另一个流行的库是seaborn&#xff0c;它基于matplotlib&#xff0c;并提供了更高级别的界面&#xff0c…

基于Socket简单的UDP网络程序 vs 简单的TCP网络程序

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 网络编程前言 网络编程是连接数字世界的桥梁&#xff0c;它让计算机之间能够交流信息&#xff0c;为我们的生活和工作带来便利…

蓝桥杯python组真题练习1

目录 1.单词分析 2.成绩统计 3.门牌制作 4.卡片 5.跑步训练 6.蛇形填数 7.时间显示 1.单词分析 1.单词分析 - 蓝桥云课 (lanqiao.cn) s list(input()) maxx 0 for i in s:num s.count(i)if num>maxx:sm imaxx numif num maxx:if ord(sm)>ord(i):sm i print…

【华为OD机试】数据单元的变化替换(JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

RabbitMQ3.x之八_RabbitMQ中数据文件和目录位置

RabbitMQ3.x之_RabbitMQ中数据文件和目录位置 文章目录 RabbitMQ3.x之_RabbitMQ中数据文件和目录位置1. 概述2. 覆盖位置1. 路径和目录名称限制2.所需的文件和目录权限 3. 环境变量4. Linux、macOS、BSD上的默认位置5. Windows上的默认位置6. 通用二进制构建默认值 1. 概述 每…

Mysql 高性能的sql优化方案和建议

优化MySQL的性能是一项复杂而关键的任务&#xff0c;它可以通过多种方式来实现。下面是一些SQL优化的方案和建议&#xff1a; 索引优化&#xff1a; 确保经常查询的列都有索引。但不要过度索引&#xff0c;因为它可能会增加写入操作的开销。使用组合索引来覆盖多个查询条件。…

考研经验与科目学习建议

前言 24考研刚刚结束&#xff0c;成功上岸&#xff0c;回想起刚开始的时候的迷茫&#xff0c;加上因为迷茫而被卖书的坑的几百块钱。感慨万千&#xff0c;所以决定写下这篇文章。回想当时&#xff0c;因为笔者零基础&#xff0c;加上作为一名专升本的学生&#xff0c;惶恐因为…

代码随想录算法训练营第35天|435. 无重叠区间|763.划分字母区间|56. 合并区间

代码随想录算法训练营第35天|435. 无重叠区间|763.划分字母区间|56. 合并区间 详细布置 今天的三道题目&#xff0c;都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#x…

【R语言实战】——Logistic回归模型

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

如何锁定鼠标光标在水平、垂直或45度对角线模式下移动 - 鼠标水平垂直移动锁定器简易教程

在我们进行精细工作例如如创建图标和图形设计时&#xff0c;通常需要我们对鼠标移动进行精确控制。一旦向左或向右轻微移动&#xff0c;都可能导致设计出错。若出现不必要的错误&#xff0c;我们极有可能不得不重新开始&#xff0c;这会令人感到非常沮丧。这种情况下&#xff0…

SAP ERP实施有几个阶段?工博科技带来SAP系统实施项目全流程介绍

根据SAP实施方法论&#xff0c;SAP系统实施流程一共分为五个主要项目阶段&#xff1a;项目准备、蓝图设计、系统实现、上线准备、上线后支持。在项目启动前&#xff0c;双方必须对项目实施过程中各阶段所涉及的任务与交付件以及项目完成标志达成共识&#xff0c;各阶段项目交付…

微信小程序 python+django口腔牙科问诊系统 springboot设计与实现_1171u

口腔助手”小程序主要有管理员&#xff0c;医生和用户三个功能模块。以下将对这三个功能的作用进行详细的剖析。 本文通过采用B/S架构&#xff0c;uniapp框架、MySQL数据库&#xff0c;结合国内“口腔助手”管理现状&#xff0c;开发了一个基于微信小程序的“口腔助手”小程序。…

《备忘录模式(极简c++)》

本文章属于专栏- 概述 - 《设计模式&#xff08;极简c版&#xff09;》-CSDN博客 模式说明&#xff1a; 方案&#xff1a;备忘录模式用于捕获对象的内部状态&#xff0c;并在需要时将对象恢复到先前的状态。它包括三个关键角色&#xff1a;发起者&#xff08;Originator&#…

MATLAB实现在LSB低三位嵌入图像

实现方法 改进的图像LSB加密算法:Matrix encoding embedding MATLAB实现代码 clc clearvars; close all;% 读取秘密图像 A = imread(lena256.bmp); % A = randi([0, 255], 128, 128, uint8); B=one_to_four(A); figure

鸿蒙系统和安卓系统之间存在几个主要区别

鸿蒙系统和安卓系统之间存在几个主要区别&#xff1a; 背景和起源&#xff1a;安卓系统起源于Linux&#xff0c;由谷歌主导开发&#xff0c;并广泛应用于智能手机和平板电脑等设备。鸿蒙系统则是华为自主研发的操作系统&#xff0c;其初衷是为了迎接全场景体验时代的到来&…

TCP客户端及服务器端开发实践

一、TCP客户端及服务器端开发实践 1、TCP网络应用程序开发分类 ① TCP客户端应用程序开发 ② TCP服务器端应用程序开发 客户端程序是指运行在用户设备上的程序&#xff0c;服务端程序是指运行在服务器设备上的程序&#xff0c;专门为客户端提供数据服务。那如何记忆呢&…

软考--软件设计师(软件工程总结1)

目录 1.定义 2.软件生存周期 3.软件过程&#xff08;即软件开发中遵循的一系列可预测的步骤&#xff09; ​编辑4.软件开发模型 5.需求分析&#xff08;软件需求分析&#xff0c;系统需求分析或需求分析工程&#xff09; 6. 需求工程 7.系统设计 8.系统测试 1.定义 软件…

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel g…

【开发环境】Mac 安装 Visual Studio Code ( VSCode 简介 | 下载 VSCode | 安装 VSCode | 安装中文语言包 )

文章目录 一、Visual Studio Code 简介二、MAC 安装 Visual Studio Code1、下载 Visual Studio Code2、安装 Visual Studio Code3、安装中文语言包4、编辑 html 并运行 一、Visual Studio Code 简介 Visual Studio Code 简称 VSCode , 是 微软 开发的一款 轻量级 / 跨平台 的代…

SQL Server的详细使用教程

安装SQL Server 下载SQL Server 安装程序运行安装程序,选择"基本"安装类型在"实例配置"页面,将实例命名为"SQLServerTest"在"服务器配置"页面,选择"NT服务\系统"作为启动账户完成其他设置,然后安装SQL Server 连接SQL Serve…