java面向对象21接口interface的使用

java面向对象21_接口(interface) 1.接口的概述 当抽象类中的方法都是抽象方法的时候,该抽象类可以用另外一种形式来定义和表示,那就是接口interface。接口和数组、类、抽象类是同一个层次的概念。 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。 抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公... 阅读详情

/*

  • 接口(interface)的使用
  • 1,使用 interface 接口名{} 的格式来定义一个接口,接口的主要用途就是被实现类实现。(面向接口编程)
  • 2,在java中接口与类是并列的结构,
  • 3,接口里面的成员
  • 3.1在JDK7及以前的版本中,接口里面只能定义全局常量和抽象方法
  • 全局常量:public static final 变量类型 变量名 = 值;因为默认是公共的静态常量,前面可以在书写时省略

  • 可以使用接口名.变量名的方式调用全局常量。
  • 抽象方法:public abstract 方法名();书写时前面可以省略

  • 3.2在JDK8及以后的版本中,接口里面可以定义静态方法与默认方法。
  • 4,接口不能实例化,里面不能有构造器
  • 5,接口需要通过实现类(implements)来使用
  • 5.1如果实现类实现了接口中所有的抽象方法,此实现类就可以实例化。
  • 5.2如果没有重写所有的抽象方法,实现类依然是抽象类,不能实例化
  • 6,java中实现类可以实现多接口,变相实现了多重继承的功能。
  • 格式为 class 类名 implements 接口名1,接口名2,…{}
  • 如果有父类,则书写上先继承父类在实现接口
  • 格式为class 类名 extends 父类名 implements 接口名1,接口名2,…{}
  • 实现类中需要实现多个接口的全部抽象方法才可以实例化。
  • 父类中实现的接口抽象法方法子类可以继承,不用再实现
  • 7,接口与接口之间可以单继承也可以多继承
  • 格式为 interface 接口名1 extends 接口名2,接口名3,…{}
  • 实现类需要实现接口与接口继承的其他接口中的所有抽象方法才可以实例化。
  • 继承的接口中有重名方法,参数也相同,实现类只需要实现一个方法。
  • 8,接口的具体使用可以体现多态性,方法形参中可以定义抽象类或接口,传入参数的时候
  • 使用抽象类的子类对象或接口的实现类对象传入。
  • 9,接口可以理解为一种规范,定义的是一组规则,体现了现实世界中“如果你是/要…则
  • 必须能…”的思想。继承是一个"是不是"的关系,而接口实现则是 "能不能"的关系。
  • 10,类似抽象类,接口也可以有匿名实现类或匿名对象。格式与抽象类情况相同。
  • 11,接口的应用:代理模式
  • 应用场景:
    * 1,安全代理:屏蔽对真实角色的直接访问。 
  • 2,远程代理:通过代理类处理远程方法调用(RMI) 
  • 3,延迟加载:先加载轻量级的代理对象,真正需要再加载真实对象比如你要开发一个大文档查看软件,
  • 大文档中有大的图片,有可能一个图片有100MB,在打开文件时,不可能将所有的图片都显示出来,这样就可以使用代理
  • 模式,当需要查看图片时,用proxy来进行大图片的打开。 
  • 分类
  • 1,静态代理(静态定义代理类) 
  • 2, 动态代理(动态生成代理类)  JDK自带的动态代理,需要反射等知识
  • 12,抽象类与接口的异同:
  • 相同点:不能实例化,可以被继承,都有可以有抽象方法,必须有子类重写后才能使用
  • 不同点:
  • 1 定义: 抽象类是包含抽象方法的类 ,接口主要是抽象方法和全局常量的集合
  • 2 组成: 抽象类中可以有 构造器、抽象方法、普通方法、常量、 变量 。接口中可以有全局常量、抽象方法、(jdk8.0增加默认方法、静态方法)
  • 3 使用 :子类继承抽象类(extends) ,子类实现接口(implements)
  • 4 关系 :抽象类可以实现多个接口, 接口不能继承抽象类,但允许继承多个接口
  • 5 常见设计模式 :抽象类是模板方法 ,接口是简单工厂、工厂方法、代理模式
  • 6 对象: 都通过对象的多态性产生实例化对象
  • 7 局限: 抽象类有单继承的局限 接口没有此局限
  • 8 实际应用 :抽象类作为一个模板,接口是作为一个标准或是表示一种能力
  • 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限
  • 在开发中,常看到一个类不是去继承一个已经实现好的类,而是要么继承抽象类,要么实现接口。
    */
package object_chapter2;

import javax.management.RuntimeErrorException;

public class Object_Interface {
   
   
public static void main(String[] args) {
   
   
	System.out.println(A.MAX_SPEED);//可以通过接口名.属性名的方式调用接口中的全局常量
	D d = new D();
	d.method();
	new E().method();
	new E().method(10);
	new E().out();
	//非匿名实现类非匿名对象调用
	USB m = new MP3();//多态性	
	Computer c = new Computer();
	c.connect(m);
	//非匿名实现类匿名对象调用
	c.connect(new Camera());
	//匿名实现类非匿名对象调用
	USB u = new USB() {
   
   

		@Override
		public void transferDate() {
   
   
			// TODO Auto-generated method stub
			System.out.println("手机传输文件");
		}

		@Override
		public void charge() {
   
   
			// TODO Auto-generated method stu
Spring Framework起源与Interface21设计思想解析 控制反转(IoC)和面向切面编程(AOP)是现代Java框架的核心设计模式。IoC通过依赖注入管理对象生命周期,AOP则实现横切关注点的解耦,两者共同构建了轻量级容器的技术基础。在J2EE时代过度工程化的背景下,Rod Johnson通过Interface21项目首次系统化实践了这些理念,其设计的模板方法模式和策略模式至今仍是Spring Framework的架构基石。理解这些原始实现有助于开发者掌握框架演进规律,特别是在云原生和微服务架构中,这种解耦思想演变为服务网格和声明式编程等现代实践。从JDBC模板 阅读详情

相关推荐

Spring Framework与Interface21的技术商业化启示

面向接口编程是Java企业级开发的核心范式,通过定义清晰的接口契约实现组件解耦。Spring Framework的IoC容器将这一理念工程化,成为依赖注入的事实标准。在云原生时代,这种设计思想进一步演化为微服务间的API契约。技术商业化需要平衡开源生态与商业价值,Interface21通过双轨制运营策略,既保持Spring核心框架的开源属性,又通过企业支持服务实现盈利。其经验对当今开发者构建可持续技术商业具有重要参考价值,特别是在响应式编程和云原生转型背景下。

weixin_32075843的博客 291

Spring源码-interface21

Spring源码-interface21

绝缘检测原理和绝缘电阻计算方法

绝缘检测的目的就是计算绝缘电阻,当绝缘电阻低于某个阈值,则很可能会造成电池短路、漏电,威胁人员安全

m0_56208280的博客 4万+

同态加密与SEAL库实战:CKKS参数调优避坑指南

本文深入探讨了同态加密技术中CKKS方案的参数调优实践,重点解析了SEAL库中`poly_modulus_degree`、`coeff_modulus`和`scale`三大核心参数的配置技巧与避坑指南。通过实战案例展示了如何平衡计算深度、精度与性能,为开发者提供了一套完整的参数优化方法论,帮助避免常见的'scale out of bounds'等错误,显著提升同态加密应用的可靠性和效率。

weixin_29315569的博客 225

瑞萨RH850/U2A8以太网模块mcal说明

如下所有功能的支持需要在达芬奇中开启EthGlobalTimeSupport。秒[32bit], 纳秒[32bit], 纳秒小数[20bit]每一帧发送数据的相关结构缓冲区都放在变量。每一帧接收数据的相关结构缓冲区都放在变量。

至道无难,唯嫌拣择。 1859

告别双系统!用Ventoy把Ubuntu 22.04装进U盘,打造你的随身开发环境(附保姆级避坑指南)

本文详细介绍了如何使用Ventoy将Ubuntu 22.04安装到U盘,打造便携式开发环境。通过即插即用的特性,开发者可以在任何x86电脑上快速启动完整的Ubuntu系统,无需配置双系统或虚拟机。文章提供了从硬件准备到系统优化的全流程指南,帮助用户高效创建随身开发环境。

weixin_31569671的博客 363

OpenClaw安装方式那么多,但建议大家还是用云厂商吧

OpenCloud的安装方式多样,包括One-liner、npm、pnpm和Hackable等。One-liner提供高效的单行命令安装;npm和pnpm作为Node.js包管理工具,分别提供常规和高性能的安装选项;Hackable则支持定制化安装。不同系统(macOS、Windows)和终端(PowerShell、CMD)的操作步骤各有特点,用户需根据自身技术背景选择合适的安装方式。官方推荐使用闲置计算资源或云部署方案以获得更佳体验。

涛涛讲AI 1398

【论文复现】——基于改进FPFH特征提取的点云模板匹配方法

基于改进FPFH特征提取的点云模板匹配方法 [J]. 应用激光, 2024, 44 (04): 196-204.

点云侠的博客 611

qcc304x笔记之手机端显示电量(九)

默认的sdk有些安卓手机不支持电量显示,所以需要加电量显示的补丁 流程分析 1. 首先新建一个task,并将task注册给电池模块 appBatteryRegister(batteryRegistrationForm) 实现handler处理函数,当battery模块电池电量更新后,会将电池百分比值发送到本模块,然后我们就可以在handler中将实时电量同步到手机端了。 hfpAtCmdInit atCmdTask.task.handler = appAtCmdHandleM...

在云巅的博客 2199

Python爬虫:如何抓取亚马逊商品评论和评分

通过本文的学习,您已经掌握了如何使用Selenium爬取亚马逊商品的评论数据,并处理反爬虫机制。特别是在亚马逊这样的大型电商平台,商品评论和评分不仅能够反映产品的质量和顾客的体验,还可以对商家进行竞争分析。通过爬取亚马逊的商品评论,您可以获得有价值的市场信息,如产品的优缺点、消费者的反馈等。通过查看源代码,您可以发现,亚马逊的商品评论和评分数据往往通过JavaScript动态加载,这也意味着在抓取时需要使用Selenium或Playwright等工具来模拟浏览器加载。亚马逊的评论页面支持分页加载。

2201_76125261的博客 1437

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: java面向对象20抽象类abstract的使用
下一篇: java面向对象22 接口的应用:工厂模式
wisdomcodeinside
博客等级 码龄7年 29粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值