IDEA-【特别重点】匿名内部类的定义、注意事项
匿名内部类的定义:
如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,
那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】
匿名内部类的定义格式:
接口名称 对象名 = new 接口名称() {
//覆盖重写所有抽象方法
};
一般使用接口必须定义一个新的接口实现类impl。而使用匿名内部类可以省略这一步,直接new接口 在()后添加大括号{ },在大括号里面就是一个类,在里面进行覆盖重写
public class DemoMain {public static void main(String[] args) {//左父右子 多态
// MyInterface obj = new MyInterfaceImpl();
// obj.method();//MyInterface some = new MyInterface();//错误写法!//使用匿名内部类MyInterface obj = new MyInterface() {@Overridepublic void method() {System.out.println("匿名内部类实现了方法");}};obj.method();}
}
对格式进行解析“new” 接口名称() {…}进行解析:
1.new代表创建对象的动作
2.接口名称就是匿名内部类需要实现那个接口
3.{…}这才是匿名内部类的内容
另外还要注意几点问题:
1.匿名内部类,在【创建对象】的时候,只能使用唯一一次。
如果希望多次创建对象,而且类的内容一样的话,那么必须使用单独定义的实现类了。
2.匿名对象,在【调用方法】的时候,只能调用唯一一次。
如果希望同一个对象调用多次方法,那么必须给对象起个名字。
3.匿名内部类是省略【实现类/子类名称】,但是匿名对象是省略了【对象名称】
强调:匿名内部类和匿名对象不是一回事!!
public class DemoMain {public static void main(String[] args) {//左父右子 多态
// MyInterface obj = new MyInterfaceImpl();//MyInterface some = new MyInterface();//错误写法!//使用匿名内部类,但不是匿名对象,对象名称就叫objAMyInterface objA = new MyInterface() {@Overridepublic void method1() {System.out.println("匿名内部类实现了方法111-A");}public void method2() {System.out.println("匿名内部类实现了方法222-B");}};objA.method1();objA.method2();//使用了匿名内部类,而且省略了对象名称,也是匿名对象new MyInterface() {@Overridepublic void method1() {System.out.println("匿名内部类实现了方法111-A");}public void method2() {System.out.println("匿名内部类实现了方法222-B");}}.method1();new MyInterface() {@Overridepublic void method1() {System.out.println("匿名内部类实现了方法111-A");}public void method2() {System.out.println("匿名内部类实现了方法222-B");}}.method1();//因为匿名对象无法调用第二次方法,所以需要再创建一个匿名内部类的对象}
}
IDEA-【特别重点】匿名内部类的定义、注意事项相关推荐
- 匿名内部类的定义格式
匿名内部类 1.使用条件:如果接口的实现类,或者父类的子类只需要使用唯一的一次,那么就可以省略该类的定义,改用匿名内部类 2. 定义格式: 接口名称 对象名=new 接口名称(){ 覆盖重写所有抽象方 ...
- ST17H26 SDK中宏定义注意事项
宏定义使用很方便,但 "##" 在宏中使用时可能导致宏定义在si工程中无法跟踪,切记! 如下: #pragma once /* Enable C linkage for C++ C ...
- C语言宏定义##连接符和#符的使用及其它宏定义注意事项
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关于#和## 在C语言的宏中,#的功能是将其后面 ...
- java匿名类对象的坏处_java匿名内部类的使用注意事项
1.首先匿名内部类要继承自抽象基类或者实现基类接口 like this abstract class Seed{ int cnt; public Seed(int x){ cnt=x; } abstr ...
- 重点项目工作规范及注意事项
一.需求评审阶段 需求正式评审前, 要有沟通流程 , 保证主要逻辑完整 项目评审阶段,根据项目目标(或预期收益),评估需求设计的合理性,同时审查数据统计是否可有效验证目标达成情况: 明确项目owner ...
- java匿名内部类,什么是匿名内部类,如何定义匿名内部类,如何使用匿名内部类?
java匿名内部类 什么是匿名内部类? 匿名内部类的使用场景? 匿名内部类如何创建? 匿名内部类的实现和使用 例1(实现接口) 例2(继承类) 什么是匿名内部类? 匿名内部类,顾名思义,就是不知道这个 ...
- Java基础知识面试题重点汇总
Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并 终得到结果的过程. 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路.方法. 和手段通过计算 ...
- 【转】java提高篇(十)-----详解匿名内部类
原文网址:http://www.cnblogs.com/chenssy/p/3390871.html 在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节 ...
- 七年级上册计算机重点知识点,初一上册数学重点知识点
为了方便大家更好的学习和复习初一上册数学课本内容,现将初一上册数学重要内容整理分享出来. 有理数重点知识点 (1)定义:由整数和分数组成的数.包括:正整数.0.负整数,正分数.负分数.可以写成两个整之 ...
最新文章
- java中 抽象类+接口
- python字典键值可以是元组吗_python元组与字典
- const应用和作用
- Selector-背景选择器
- hdu 1024(滚动数组优化)
- excel表中怎么让隐藏的表格中不粘贴内容-制作autohotkey快捷键
- java后台生成分页_Java实现分页的前台页面和后台代码
- 快速阅读《构建之法》——构建之法阅读笔记01
- 冬日魔幻之旅-seata+dubbo+nacos+springboot解决分布式事务的全网段唯一实践之作(上)
- Git 拉取远程仓库失败
- 牛客练习赛107 A~D除C
- 除中国中医药数据库官网外-必备5个其它常用中国中医药数据库
- 浙传计算机二级成绩查询,浙江传媒学院艺考成绩查询
- DeFi总锁仓金额突破36亿美元, OKEx赋能DeFi大盘点
- 毕业设计-基于微信小程序的工单智能管理系统
- 有关REST的一些内容
- 希尔排序解析实例实现
- 改做人工智能之前,90%的人都没能给自己定位
- C/C++编程新手入门基础系列:俄罗斯方块小游戏制作源代码
- LeetCode题解 - 动态规划-股票买卖
热门文章
- win2008 r2安装mysql_Windows 2008 r2上安装MySQL
- 淘宝难做, 独立网店是趋势
- Qt中tr()函数的使用
- sdn主要包含哪些接口_SDN网络架构简要介绍
- 思科网络安全 第一章测验答案
- java用poi导出word,Java使用POI导出Word文档的操作教程,poiword
- 电脑奔溃的时候,到底发生了什么?
- ctf游戏_ctf夺旗赛
- 微擎公众版、授权版和商业版有什么区别?如何选择?
- android app发展历史,[Android]全历史v2.0.1 AI历史app 学历史和要了解历史 | 樱花庄