JAVA基础_09 接口 匿名类

对象:匿名接口、接口嵌入和行为 14 空接口 func main() { var e interface{} = 1 println(e) } 空接口没有任何声明,所以所有类型都实现该接口。类似object单根祖先类型。 空接口就是什么方法的声明都没有,意味着任何一个类型都能实现空接口。在其他语言里都有一个类似Object单根类型,什么类型都可以往里丢。 14 匿名接口 type X int func... 阅读详情

一. 接口

a.接口:当一些具体的事物具有特殊的功能,而这些特殊的功能又不能写在类中,JAVA提供了接口实现,关键字是interface

b.接口定义的格式:

interface接口名{

}

c.接口的特点:

成员变量:接口的成员变量只能是常量,默认修饰符是public static final

成员方法:接口中的成员方法只能是抽象方法,默认修饰符为:public abstract

构造方法:接口中的无构造方法

d.注意:接口不能实例化,只能间接的通过非抽象的接口的子实现类实例化

接口的子类和接口是实现关系

e.接口子实现类格式:

class  接口子实现类名 implements 接口名{

}

f.接口子实现类可以是抽象类也可以是非抽象类:

如果接口的子实现类是抽象类,那么接口就没有办法实例化,所以就没有意义.

而非抽象的子实现类是可以实例化的

例如:

动物类中有具体的动物:猫;

有些猫具有跳高的额外功能

所以:需要将跳高功能定义为一个接口中的抽象方法

接口实例化的时候可以利用接口多态的方法实现:

代码如下:

 

输出结果:

g.重点:接口的抽象类的区别:

成员变量:

接口中的成员变量只能是常量,默认修饰符为:public staticfinal

抽象类中的成员变量既可以是常量,也可以是变量;

成员方法:

接口中的成员方法只能是抽象方法,默认修饰符为:public abstract

抽象类中的成员方法既可以是抽象方法又可以是非抽象方法

构造方法;

接口中的没有构造方法;

抽象类中可以有构造方法;

h.类与类,类与接口,接口与接口的关系:

1)类与类的关系:

继承关系,支持单继承和多层继承,不支持多继承;

2)接口与接口之间的关系:

继承关系,支持单继承和多继承;

3)类与接口之间的关系:

实现关系,可以单实现也可以多实现,并且类可以继承另一个类的同时去实现多个接口

例如:

有两个接口:Monther和Father

接口sisiter可以多继承Monther和Father

类son可以继承object类的同时去实现Monther和Father接口

代码实现如下:


输出结果:


二.内部类

a.   内部类:在类中定义了另一个类(A类中定义了B类,B类就是A类的内部类)

b.   内部类的访问特点:

内部类可以直接访问外部类的成员,包括私有;

外部类可以直接访问内部类的成员吗?

外部类不能直接访问内部类的成员,需要创建内部类的对象,通过内部类对象调用方法;

c.   内部类的分类:

成员内部类:在外部类的成员位置(在方法外外部类中)

局部内部类:在外部成员的局部位置(在方法中)

(一)成员内部类:

1)如何访问内部类的成员:

     不能直接创建对象;

访问格式:

外部类名.内部类名 对象名=外部对象.内部对象;

分析:外部类中有私有变量num;用内部类中的show()方法可以访问,而内部类中的show()方法只能通过内部类的对象来调用,而创建内部类对象时就是以上格式;

代码如下:


 

 

运行结果:

 

 

2)成员内部类有关的修饰符:

private:可以是是一个私有的内部类,目的是保护数据的安全性;

成员内部类如果是私有的,那么就不能直接创建对象,就要通过创建外部类的对象,然后外部类对象调用外部类中的方法,外部类的方法中可以创建成员内部类的对象,然后访问成员内部类中的数据成员;

例如:


 

 

 

static:成员内部类可以是一个静态的内部类:

静态成员内部类访问外部类数据,外部类数据必须也是静态的;

成员静态内部类访问自己内部成员格式:

注意:此时静态成员内部类不能通过以下的方式来访问本类中的成员

外部类名.内部类名 对象名=外部对象.内部对象;

静态成员内部类访问自己本类数据成员的正确格式:

外部类名.内部类名 对象名=new 外部类名.内部类名();

例如:


 

 

 

(二)局部内部类

1)局部内部类的访问:

局部内部类的访问是在局部内部类所在的方法中创建一个局部内部类对象,然后通过局部内部类对象调用局部内部类中的数据成员.

面试题:

2)局部内部类访问局部变量,有什么要求:

要求:局部内部类访问局部变量,需要让局部使用final修饰.因为局部变量是随着方法的调用而存在,随着方法调用完毕而消失;消失的时候不会立即消失,而是等待GC空闲时刻进行垃圾回收,此时method()调用完毕,可是局部内部类还在访问着,所以此时就需要将局部变量用final修饰

分析:  有外部类Outer6

外部类中有私有成员变量num,

局部内部类在外部类中的method()方法中,

method()中有局部变量num2,

局部内部类要访问num2,就必须将num2设置为final,

访问局部内部类时应该在method()方法中创建局部内部类对象,

通过局部内部类对象调用局部内部类中的数据成员.

测试类:

测试类中只需要创建一个外部类对象,

通过外部类对象调用method()方法.

代码如下:

 

 

运行结果:

 

 

 

d.    匿名内部类:

1.匿名内部类的前提条件:

有一个类或者接口存在:

这个类可以是具体类也可以是抽象类.

2.匿名内部类的格式:

new 类名/接口名(){

方法重写;

};

当想调用匿名内部类重写的成员方法时,如何调用?

new 类名/接口名(){

   method(){

        

}

}.medthod();

      3.匿名内部类的本质:

           需要继承该类或实现该接口的子类对象;

注意:  内部类与外部类之没有直接继承关系.

面试题:

分析:

外部类Outer8:有成员变量num=10;

成员内部类Inner8:Inner8中有变量num=20;

成员内部类中有method()方法:method()有局部变量num=30;

测试类:

创建了一个成员内部类对象oi;

用对象oi去调用method();

补充method()方法,使其在控制台输出:30,20,10

System.out.println(num);//就近原则,输出method()方法中的num;

System.out.println(this.num);//代表当前类的对象:Inner8类中

System.out.println(newOuter().num);//使用匿名对象去调用成员变量num;

或者System.out.println(Outer.this.num);//使用外部类名.this去调用成员变量(外部类限定this)

 

代码如下:


 

 

运行结果:

 

 

 

一.形式参数与返回值是引用类型时:

1)返回值是引用类型时:

类:返回的是该类的对象;

抽象类:返回的是该抽象类的子类对象;

接口:返回的是该接口的子实现类对象;

2)形式参数是引用类型时:

类:传的是该类的对象;

抽象类;传的是该抽象类的子类对象;

接口:传的是该接口的子实现类对象;

 

分析:

有接口Love2,里面有抽象方法love();

接口Love2的子实现类Student,重写love()方法;

类PersonDemo2里面有返回类型为Love2的getLove2()方法

getLove2()里面返回一个Student3类型的对象;

 

要求:

实现Students3里面重写的love()方法;

测试类:

使用链式编程调用

new PersonDemo2().getLove2().love();

代码如下:


 

 

 

运行结果:


 

 

 

 

 

 

 

 

 

 

 

睿尔曼超轻量仿人机械臂--医疗工作站运行Demo(Python) 开发环境系统:win10Python版本:python 3.11.2由于机械臂相关软件版本不定期更新,如果你使用的软件接口或协议与本文有出入,请联系官方技术人员及时更新。 阅读详情

相关推荐

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6729

接口的匿名类

public class USBTest { public static void main(String[] args) { Computer computer = new Computer(); //创建了接口非匿名实现类的非匿名对象, Flash flash = new Flash(); computer.transferData(flash); //创建了接口匿名实现类的非匿名对象, USB phone = new USB() { @Override publ

qq_46019173的博客 512

从零构建AI智能体:基于opencode框架的Agent开发全流程指南

AI智能体(AI Agent)作为人工智能领域的重要发展方向,正从概念走向工程实践。其核心原理在于赋予AI自主规划、执行和迭代的能力,使其不再局限于简单的问答,而是能够理解复杂目标、分解任务、调用工具并完成闭环。这一技术价值在于将AI从“对话伙伴”升级为“执行伙伴”,极大地拓展了自动化边界,在智能客服、数据分析、自动化运维等场景展现出巨大潜力。本文聚焦于如何利用opencode这一热门开发框架,快速构建具备实际能力的智能体。通过拆解其核心组件如技能库、规划器与运行时,并结合具体实践案例,系统阐述了从环境搭建

weixin_29055699的博客 434

java匿名接口实现

java接口实现由两种方式: 1、显式的实现(implements) 伪代码: interface InterfaceName { //abstract methods declaration } class ClassName implements InterfaceName { //abstract methods overwrite } 示例代码: package...

技术成就梦想,梦想成就未来。If you try hard enough, it can be. 8717

CosyVoice 本地部署详细教程 手把手小白教程

本文提供了详细的CosyVoice本地部署教程,强调了避免中文名称和空格的重要性,并列出了必要的软件安装步骤,包括CUDA、cuDNN、Git和Miniconda。教程涵盖了从检查CUDA版本到下载模型和运行模型的全过程,确保用户能够顺利部署并使用CosyVoice。

huazn612的博客 2万+

【芯片驱动】2. CMT2300A配合硬件测试(灵敏度和发射功率)的软件实现

前言 在开发一款无线射频产品的时候,软件是一部分,硬件也是一部分。而决定无线收发性能的,首先是硬件的匹配电路,然后才到软件部分的优化。 一款无线射频产品,首先需要先决定是在那个频率范围内(当然是国家允许的范围内),然后硬件则需要在基于这个频点范围进行硬件的参数匹配,具体又分为发送功率匹配、天线匹配、和接收灵敏度的匹配。 现在我们使用2300a这款无线芯片来说,除非自己的团队是射频专家,则可以自己进行无线外围电路的设计外,另外一种更加快捷的方式,就是寻找原厂技术支持,他们会给...

sishuihuahua的博客 7052

Java第四章第3节:接口与内部类 之 匿名类 实验+图解讲解

当使用类创建对象时,允许将类体和对象的创建组合在一起,即:除了构造方法还有类体,该类体被认为是该类的一个子类去掉类声明后的类体,称为“匿名类//匿名类的类体或者这样看👇:按小编的理解就是,匿名类纯粹是为了代码更加简洁——通过new一个类出来执行特定的任务;怎么识别?——就是看到用类new出一个类,然后花括号的右边" } "紧跟着一个分号 ";" 的所谓异常就是指程序运行时可能出现的一些错误,例如数组越界、除零等。出现异常时,JVM就用异常类Exception。

upc_ws云边牧风是文森 681

【工具篇】万字长文拆解 Otter.ai:语音转文字领域的「瑞士军刀」是如何炼成的?(附保姆级教程)

但需要注意,2024年欧盟已出台《AI转录伦理指南》,要求所有录音需获得参与者明确授权。举个真实案例:某硅谷创业团队用Otter.ai记录产品评审会,系统自动标红争议点并生成待办事项,会议效率提升40%。AIGC技术原理、 实时转录解析、 定价策略分析、 语音算法拆解、 多平台兼容测试、 深度学习框架、 空间计算专利。——无论是跨国会议、课堂讲座还是深夜灵感,它都能实时生成带时间戳的文本记录,准确率高达95%。(此处建议插入Otter.ai会议转录动图,展示实时字幕生成效果)(数据来源:综合参考文献整理)

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1259

JAVA学习-类和接口.匿名类

/ 使用匿名类继承父类Hello在上面的例子中,使用匿名类继承了Person类,并重写了sayHello()方法,实现了不同的功能。

weixin_69763181的博客 529

Fiori Elements 从入门到精通开发教程的文章目录

Fiori Elements 开发技术相对 SAP 其他历史悠久,发展成熟的开发技术来说,是一个新事物。正因如此,迄今为止国内深入讲解 Fiori Elements 应用的中文材料几乎没有。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4763

lammps不同晶面建模方法汇总

Lammps lattice命令中的orient关键词可实现晶体的旋转和重定向,下面的命令中,111面的法线方向与y正方向重合,说明111面垂直于y轴。在有些模拟中,需要研究特定面的性质,比如研究110面,默认状态下,110面不是坐标平面,研究起来不方便,需要对模型进行旋转,如下图所示。经过旋转后,110面的法线方向与x轴正方向重合,旋转之后再重新对晶体进行切割,新模型的x面就是110面。需要注意的是,这种方法需要明确指定x、y、z轴的正方向分别对应哪三个面的法线方向,缺一不可。大家好,我是小马老师。

lammps_jiayou的博客 356

kotlin之匿名类实现接口

9 kotlin之匿名类实现接口 Java简直一模一样 import javax.print.DocFlavor interface IDatabaseTest { fun connect(connectString: String) fun close() } fun main() { var MockDB = object : IDatabaseTest { override fun connect(connectString: String) {

仰望星空 2336

第81篇:Vibe Coding时代:LangGraph + Eval评估体系实战,解决 Agent 优化全靠感觉的问题

本文介绍了一个为LangGraph Coding Agent设计的评估体系解决方案。文章首先指出了当前AI Coding Agent开发中的常见问题:优化过程缺乏客观评估标准,导致改进效果难以量化。随后提出了一个完整的评估框架,包括评估指标(任务成功率、质量指标、安全指标、成本指标和流程指标)、项目结构设计和评估案例集。 核心内容包括: 设计了JSON格式的评估案例集,覆盖正常任务、边界任务和高风险场景 实现了模拟Agent输出的演示代码 构建了多维度评分系统,包括关键词匹配、禁用词检测和成本评估 提供了评

sundong_81的博客 47

java学习——匿名类和日期类

对java中的日期类和匿名类进行总结,可供大家学习,能够帮助复习以及快速入门。

m0_57957187的博客 957

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java:图形用户界面(匿名类作为事件监听器)

package wj; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class L09_14_Anonymous extends JFrame { JButton jbtn; public L09_14_Anonymous(){ super(“匿名类作为事件监

YanXiaoJu17的博客 1265

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java基础09面向对象之内部类(学习笔记 专题补充 深化理解)(非原创)

匿名内部类与局部类对作用域内的变量拥有相同的的访问权限。匿名内部类可以访问外部类的所有成员;匿名内部类不能访问外部类未加final修饰的变量(注意:JDK1.8即使没有用final修饰也可以访问);属性屏蔽,与内嵌类相同,匿名内部类定义的类型(如变量)会屏蔽其作用域范围内的其他同名类型(变量):案例一,内嵌类的属性屏蔽:运行结果:这个实例中有三个变量x:1、ShadowTest类的成员变量;2、内部类FirstLevel的成员变量;

2301_82241647的博客 661

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java基础09

java基础 面向对象 封装、继承、多态 封装 类,模板、图纸 对象,实例 引用,遥控器 构造方法 新建对象时执行 不定义有默认 作用:任意功能都可以 常见作用:为成员变量赋值 this this.xxx 引用当前对象的地址 this(…) 构造方法之间调用 方法重载 Overload 同名不同参 private 私有、隐藏 毫秒值表示的时间 System.currentTimeMillis() 1970-1-1 0点开始的毫秒值 可以把毫秒值封装到 ja

m0_46435451的博客 186

292、Java中级09 - 【Lambda表达式】 2020.02.29

0、目录1、情景2、普通方法3、匿名类方式4、Lambda方式5、设置eclipse以支持Lambda6、从匿名类演变成Lambda表达式7、匿名方法8、Lambda的弊端9、参考链接 1、情景 假设一个情景: 找出满足条件的Hero 本教程将从使用普通方法,匿名类,以及Lambda这几种方式,逐渐的引入Lambda的概念 2、普通方法 使用一个普通方法,在for循环遍历中进行条件判断,筛选出满足...

youyouwuxin1234的博客 8279

2021-09-16

Day12 java learning 匿名类 临时使用,不用实例化的类,直接在其内部创建需要使用的对象 接口补充 Java8新特性 内部类的补充

weixin_51289292的博客 101

2018/01/09JAVA 基础 / 接口与继承 / JAVA的4种内部类详解

  所谓内部类,就是在一个类的内部又设计了一个类。内部类可分为四种:非静态内部类 、静态内部类 、匿名类 、本地类。 一、非静态内部类 1)代码案例 : 1 package charactor; 2 3 public class Hero { 4 private String name; // 姓名 5 6 float hp; // 血量 ...

weixin_30426957的博客 76

Java进阶3 —— 类和接口设计原则

原文链接:http://www.javacodegeeks.com/2015/09/how-to-design-classes-and-interfaces.html 本文是Java进阶课程的第三篇。 本课程的目标是帮你更有效的使用Java。其中讨论了一些高级主题,包括对象的创建、并发、序列化、反射以及其他高级特性。本课程将为你的精通Ja...

weixin_34032779的博客 512

JAVA 面向对象09-接口、N种内部类

接口N种内部类 接口 面向接口编程:约束和实现分离。 接口:只有规范,自己无法写方法,也成为“专业的约束”。定义一组规则,体现“如果你是…,则必须能…”。 接口的本质是契约,精髓是对对象的抽象。 声明接口的关键字为:interface。关键字:implements为实现。 接口的作用: (1)约束; (2)定义一些方法,让不同的类去实现; (3)定义的方法默认修饰为:public abstract; (4)定义的属性默认修饰为:public abstract final(常量); (5)接口不能被new实.

qq_44826240的博客 745

鸟菜基础篇_2012_09_09内部类

还是回到最原始的java基础上来吧。鄙人觉得不论是java还是其他语言学习都有那么几个阶段,首先语法,然后是设计,最后是框架。这三者逐层递进,类似于术,道,禅之类吧。让我想起王国维先生曾谈到学习的三种境界:独上高楼,望尽天涯路;衣带渐宽终不悔,为依消得人憔悴;众里寻他千百度,蓦然回首,那人却在灯火阑珊处。当然,扯远了。回到本章的学习当中吧。 其实接触内部类是从先看到一段代码开始。 实例1:

Robert_mm的专栏 618

Java中接口与实例化【引用】

Java中接口与实例化【引用】 (2014-06-09 16:30:40) 转载▼ 标签: 接口 java 分类: android 一.问题引入         前两天学代理模式的时候想到的,接口可不可以new呢?         接口是特殊的抽象类,接口的方法都默认为  public  abstract  的。。。 抽象的方法不能

Li18791173650的博客 395

初学Java,匿名内部类(二十)

匿名类的作用一般是只需要使用一次的类,不需要复用,临时性比较强,C#中同样有匿名类,不过是在C# 3.0才加入 01.var myVar = new 02.{ 03. field_string = “abcd” 04. field_int = 12; 05.}; Java的格式很不一样,定义也很不一样 new 父类构造器(实参列表) | 实现接口()

star博客 564

java接口匿名实现类的匿名对象和java类匿名子类的匿名对象相关提点

java内部类,匿名对象,匿名子类,匿名实现类

weixin_42761614的博客 587
上一篇: JAVA 4.1 方法
下一篇: JAVA基础10 Object类和String类
RBD_JAVA
博客等级 码龄9年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值