Java面向对象-接口

Java面向对象-接口
- 一、JDK1.8之前
- 二、接口的作用
- 三、JDK1.8之后,新增非抽象方法
- 四、静态方法
一、JDK1.8之前
1、类是类,接口是接口,它们是同一层次的概念
2、接口中没有构造器
3、接口如何声明:interface
4、在jdk1.8之前,接口只有两部分内容
a、常量 public static final
b、抽象方法 pubilc abstract
注意:修饰符可以省略不写,ide会帮助你自动补全
5、类和接口的关系是什么? 实现关系,类实现接口
6、一旦实现一个接口,那么实现类要重写接口中全部的重写方法
7、如果没有全部重写抽象方法,那么这个类变成一个抽象类
8、java只有单继承,java还有多实现
一个类继承其他类,只能直接继承一个父类
但是实现类实现接口的话,可以实现多个接口
9、写法:先继承 再实现 class Student extends Person implements TestInterface01, TestInterface02
10、接口不能创建对象
package com.msb_interface;/*
1、类是类,接口是接口,它们是同一层次的概念
2、接口中没有构造器
3、接口如何声明:interface
4、在jdk1.8之前,接口只有两部分内容a、常量 public static finalb、抽象方法 pubilc abstract注意:修饰符可以省略不写,ide会帮助你自动补全*/
public interface TestInterface01 {//常量/*public static final*/ int NUM = 10;//抽象方法/*public abstract*/ void a();/*public abstract*/ void b(int num);/*public abstract*/ int c(String name);
}interface TestInterface02 {void e();void f();
}/*5、类和接口的关系是什么? 实现关系,类实现接口
6、一旦实现一个接口,那么实现类要重写接口中全部的重写方法
7、如果没有全部重写抽象方法,那么这个类变成一个抽象类
8、java只有单继承,java还有多实现
一个类继承其他类,只能直接继承一个父类
但是实现类实现接口的话,可以实现多个接口
9、写法:先继承 再实现 class Student extends Person implements TestInterface01, TestInterface02*/
class Student extends Person implements TestInterface01, TestInterface02 {@Overridepublic void a() {System.out.println("a.....");}@Overridepublic void b(int num) {System.out.println("b.....");}@Overridepublic int c(String name) {return 0;}@Overridepublic void e() {System.out.println("e.....");}@Overridepublic void f() {System.out.println("f.....");}
}class Test{public static void main(String[] args) {//10、接口不能创建对象TestInterface01 t =new Student(); //接口指向实现类——》多态//11、接口中的常量如何访问System.out.println(TestInterface01.NUM);System.out.println(Student.NUM);Student s = new Student();System.out.println(s.NUM);TestInterface01 t1 = new Student();System.out.println(t1.NUM);}
}
二、接口的作用
定义规则:只是跟抽象类不同地方在哪?它是接口不是类
接口定义好规则之后,实现类负责实现即可
继承:子类对父类的继承
实现:实现类对接口的实现
继承:收集 extends 照相机 “is-a”的关系,手机是一个照相机。
上面的写法不好。
实现:收集 implements 拍照功能 “has-a”的关系,手机具备照相的能力。
案例:飞机、小鸟、风筝
多态的应用场合:
1、父类当作方法的形参,传入具体的子类的对象
2、父类当作方法的返回值,返回的是具体的子类的对象
3、接口当作方法的形参,传入具体的实现类的对象
4、接口当作方法的返回值,返回的是具体的实现类的对象
三、JDK1.8之后,新增非抽象方法
被public default修饰的非抽象方法:
注意1:default修饰符必须要加上,否则出错。
注意2:实现类中要是想重写接口中的非抽象方法,那么default修饰符必须不能加,否则出错。
package com.msb_interface1;public interface TestInterface {//常量public static final int num =10;//抽象方法public abstract void a();//public default修饰的非抽象方法public default void b(){System.out.println("--TestInterface---b()----");}
}class Test implements TestInterface{@Overridepublic void a() {System.out.println("重写了a方法");}@Overridepublic void b() {TestInterface.super.b();}public void c(){//用接口中的b方法b(); //可以
// super.b(); 不可以TestInterface.super.b(); //可以}
}
四、静态方法
static不可以省略不写
静态方法不能重写
package com.msb_interface1;public interface TestInterface2 {// 常量public static final int NUM = 10;// 抽象方法public abstract void a();//public default非抽象方法、public default void b() {System.out.println("----b----");}//静态方法public static void c() {System.out.println("---c--");}
}class Demo implements TestInterface2{@Overridepublic void a() {System.out.println("重写了a方法");}public static void c() {System.out.println("---Demo中的c方法--");}
}class A{public static void main(String[] args) {Demo d = new Demo();d.c();Demo.c();TestInterface2.c();}
}
---Demo中的c方法--
---Demo中的c方法--
---c--
为什么要在接口中加入非抽象方法?
如果接口中只能定义抽象方法,那么我要是修改接口中的内容,那么对实现类的影响太大了,所有实现类都会受到影响。
现在在接口中加入非抽象方法,对实现类没有影响,想调用去调用即可。
相关文章:
Java面向对象-接口
Java面向对象-接口 一、JDK1.8之前二、接口的作用三、JDK1.8之后,新增非抽象方法四、静态方法 一、JDK1.8之前 1、类是类,接口是接口,它们是同一层次的概念 2、接口中没有构造器 3、接口如何声明:interface 4、在jdk1.8之前&…...
怎么不使用springboot Helper或Spring Initializr来创建spring项目
1. 创建项目目录结构 首先,创建项目的基本目录结构。一个典型的 Maven 项目结构如下: my-spring-project ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └…...
STM32CubeMX配置-RTC周期唤醒
一、简介 MCU为STM32G070,采用内部时钟32KHZ,配置为周期6s唤醒,调用回调函数,进行喂狗操作。 二、配置 初始时间、日期、周期唤醒时间配置。 开启周期唤醒中断 三、生成代码 调用回调函数,进行喂狗操作。 //RTC唤醒回…...
js如何添加新元素到数组中
1.push方法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。这是向数组添加元素的最常用方法。 let arr [1, 2, 3]; arr.push(4); // 向数组末尾添加元素4 console.log(arr); // 输出: [1, 2, 3, 4] 2.unshift方法 unshift() 方法可向数组的…...
Python变量和基本数据类型
变量和基本数据类型 变量是什么? 变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同…...
嵌入式数据库_1.嵌入式数据库的定义及特点和分类
1.嵌入式数据库的定义及特点 1.1定义 嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精…...
新人学习笔记之(变量)
一、什么是变量 1.变量是存储数据的小盒子,不是里面的数据 2.经常发生改变的数据 二、变量的定义格式 1.数据类型 变量名; 数据类型:为盒子中存储的数据,加入类型【限制】 变量名:为盒子起的名字 分号:语句的结束 三…...
Windows修改CMD窗口编码为UTF-8
windows下的cmd的默认编码是GBK编码,有时可能造成乱码问题,下面是我找到的两种更换编码方式为UTF-8的方法。 1、临时修改 (1)先进入cmd命令窗口(快捷键win键R) (2)直接输入“chcp…...
os实训课程模拟考试(1~7)
操作系统的基本功能和设计目标 1、 操作系统是一组 ____(单选) A、 文件管理程序 B、 资源管理程序 C、 中断处理程序 D、 设备管理程序 2、 以下哪项不是操作系统关心的主要问题?(单选) A、 管理计算机裸机 B、 设计…...
yolov10 学习笔记
目录 推理代码,source可以是文件名,路径, 预测可视化: 预测可视化加nms 训练自己的数据集, 训练一段时间报错:dill库 解决方法: 推理代码,source可以是文件名,路径…...
NAT概述
NAT概念 NAT(Network Address Translation,网络地址转换)是一种用于修改网络地址信息的技术,主要用于在路由器或防火墙上进行地址转换,以解决 IPv4 地址短缺问题、提高网络安全性以及实现私有网络与公有网络之间的通信…...
Ansys Mechanical|学习方法
Ansys Mechanical是Ansys的旗舰产品之一,涉及的学科体系全面丰富,包括的力学分支主要有理论力学,振动理论,连续介质力学,固态力学,物理力学,爆炸力学及应用力学等。 在自媒体及数字经济飞速发展…...
热门开源项目ChatTTS: 国内语音技术突破,实现弯道超车
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
环形链表2证明
解法 快慢指针相遇后,其中一个指回头部,然后同步前进 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNod…...
fetch_lfw_people()报错urllib.error.HTTPError: HTTP Error 403: Forbidden的解决方案
零、实验报告地址 计算机视觉实验二:基于支持向量机和随机森林的分类(Part one: 编程实现基于支持向量机的人脸识别分类 )-CSDN博客 一、代码报错 fetch_lfw_people()报错urllib.error.HTTPError: HTTP Error 403: Forbidden 二、报错原因 通常是由于访问权限不足导致的…...
Verilog-Behavior Level 和 RTL Level 和 GATE Level的区别
硬件设计中对硬件的描述可以具有不同的抽象级别,以Verilog为例: Behavior Level。描述的是硬件的行为,当我们在看到如下关键字时就是行为级别的代码:#,wait,while,force,release等&…...
华为OD机考题HJ1 字符串最后一个单词的长度
前言 描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描述: 输入一行,代表要计算的字符串,非空,长度小…...
C语言---------深入理解指针
目录 一、字符指针 二、指针数组: 三、数组指针: 1、定义: 2、&数组名和数组名区别: 3、数组指针的使用: 四、数组参数,指针参数: 1、一维数组传参: 2、二维数组传参&am…...
C++ 算法教程
归并排序 #include<iostream> using namespace std; template <class T> void Merge(T data[],int start,int mid,int end) {int len1 mid - start 1, len2 end - mid;int i, j, k;T* left new int[len1];T* right new int[len2];for (i 0; i < len1; i)…...
【支持向量机】问题梳理
学完支持向量机后我有些地方不太清楚,故做如下梳理: 1.为什么支持向量机模型认为一个点划分正确的标志是y(wxb)>1呢,为什么不是y(wxb)>0,比如y为1,wxb为0.5,大于0,则预测正确。 2.所以意思…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
数据库——redis
一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
Angular中Webpack与ngx-build-plus 浅学
Webpack 在 Angular 中的概念 Webpack 是一个模块打包工具,用于将多个模块和资源打包成一个或多个文件。在 Angular 项目中,Webpack 负责将 TypeScript、HTML、CSS 等文件打包成浏览器可以理解的 JavaScript 文件。Angular CLI 默认使用 Webpack 进行项目…...
