java匿名内部类的初解
java原生态中的匿名内部类
1.匿名内部类的定义
使用匿名内部类的两种的方法
- 建立父类,重写父类的方法
- 实现接口的方法
2.普通类的实现
1. 普通类实现
实现普通类需要先声明对一个类的对象,再调用对象的方法
建立一个example类
public void student() {
System.out.println("学生在学习");
}
声明类,并实现对应的方法,
public static void main(String[] args) {
example example = new example();
example.student();
}
对应的输出

2.继承父类,重写父类的方法
继承上述的example类,建立example1类,重写父类的方法
public class example1 extends example {
public void student() {
System.out.println("学生在运动");
}
}
在主类中实现其方法
public static void main(String[] args) {
example example = new example1();
example.student();
}
对应的输出

3.普通类实现对应类的缺点
从以上两个例子,我们会发现,当实现一个类的时候,无法重写对应类中的方法。想要实现重写对应类的方法就必须要继承对应的类,重写对应类大方法,再在主类中调用子类,这样在想要实现某一次的父类方法时,就显得太繁重,因此可以使用匿名内部类的方法去实现一个的方法
3.匿名内部类的实现
1.主类中直接使用类
使用new 对应的类
依旧使用上述的example类做例子,在主类中
public static void main(String[] args) {
new example(){
@Override
public void student() {
super.student();
}
}.student();
}
对应的输出

2.在主类中通过接口实现匿名内部类
建立一个接口text
public interface text {
void setName(String name);
}
建立一个类example2类,在其中引入text类
public class example2 {
private int num1;
private text text;
public void setNum1(int num1) {
this.num1 = num1;
}
public void setContent(text cellback) {
text = cellback;
}
public void getresult(String name) {
if (this.num1 == 1) {
text.setName(name);
}
}
}
在主类中重写接口
public static void main(String[] args) {
example2 example2 = new example2();
example2.setContent(new text() {
@Override
public void setName(String name) {
System.out.println(name);
}
});
example2.setNum1(1);
example2.getresult("ts");
}
对应的输出

对应的实现过程为:在主类中设置对应num为1,触发example2中的getresult()方法,对应的name为“ts”,而主类中调用了setcontent()方法,使对应的子类中的接口对象的方法重写,对应的接口对象的setname()方法实现输出对应的name值。调用getresult()方法,触发接口的方法,输出name的值。
4.对应的优点
通过实现匿名内部类,可以实现重写接口的方法,在对应的子类中设置对应的触发条件,实现接口的方法。
实现对类的方法的重写,相较于继承类,对类的方法重写,使用匿名内部列更方便
java匿名内部类的初解的更多相关文章
- #随笔之java匿名内部类
随笔之java匿名内部类 从今天起开始每日一篇技术博客,当然这只是我当天所学的一些随笔,里面或多或少会有理解不当的地方,希望大家多多指教,一起进步! 在讲匿名内部类之前,先讲讲内部类的一些概念. 1. ...
- 从一开始,说出事java匿名内部类
java内部类.匿名类原本以为它们的使用已经很滑, 成绩, 就在昨天晚上12指向时钟发生重大事故.事故的严重程度再说吧,那是因为我没有睡一晚睡眠. 那以下先用一段模拟代码来描写叙述下我出现的问题的: ...
- (转)java匿名内部类详解
原文:http://android.blog.51cto.com/268543/384844/ 内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可以是静态static的 ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- 【50】java 匿名内部类剖析
匿名内部类介绍: 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 匿名内部类的声明 ...
- JAVA匿名内部类(Anonymous Classes)
1.前言 匿名内部类在我们JAVA程序员的日常工作中经常要用到,但是很多时候也只是照本宣科地用,虽然也在用,但往往忽略了以下几点:为什么能这么用?匿名内部类的语法是怎样的?有哪些限制?因此,最近,我在 ...
- Java匿名内部类访问外部
匿名内部类访问外部局部变量必须是final修饰的,Java 1.8 会默认为其加上final 例子如下: public void send(String topicName, T obj) { Str ...
- 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
大部分时候,类被定义成一个独立的程序单元.在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类,包含内部类的类也被称为外部类. class Outer { priv ...
- Java 匿名内部类 & 内部类
一.JAVA中内部类和匿名内部类的区别 内部类:内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,内部类可以实例化,多次使用. ...
- java匿名内部类使用场景列举
示例一: package com; interface Operation { double operateTwoIntNum(int a, int b); } p ...
随机推荐
- 免费1年服务器,部署个ChatGPT专属网页版
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 白皮袄个免费1年服务器,部署个ChatGPT专属网页版! api.openai.com por ...
- Python爬虫基础教程2
beautifulsoup4介绍/遍历文档树 bs4 > 从html或xml文件中提取的python库 用它来解析爬取回来的xml 安装:pip install beautifulsoup4 p ...
- cephadm 安装部署 ceph 集群
介绍 手册: https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5/html/architecture_guide/ ...
- DG:模拟failover故障与恢复
问题描述:情形是当主库真正出现异常之后,才会执行的操作,那么我们执行过failover 之后,如何在重新构建DG,这里我们利用flashback database来重构.模拟前主库要开启闪回区,否则要 ...
- 【SpringMVC】(二)RESTFul
RESTFul RestFul简介 REST:Representational State Transfer,表现层资源状态转移 资源:资源是一种看待服务器的方式 资源的表述:资源的表述是资源在某个特 ...
- Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能都会有所下降,怎么处理?
索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降.为此,可以采取以下几种方式来减缓这种影响: 1. 限 ...
- java 实现逻辑分页
//逻辑分页PageModel model = new PageModel();long total = list.size();model.setTotal(total);model.setPage ...
- 飞行时间技术TOF
文章目录 飞行时间技术TOF 一. 光速的测定 二. 各种TOF技术 直接脉冲TOF 脉冲间接TOF 连续波调制TOF(Continous Wave TOF) 三. TOF技术的应用 飞行时间技术TO ...
- 【必知必会的MySQL知识】③DML语言
目录 前言 准备 插入数据 语法格式 插入完整行数据 插入多行数据 将检索出来的数据插入表 更新数据 准备两张表 语法 实践操作 删除数据 语法 实践操作 小结 前言 前面的两篇文章中,我们已经对My ...
- SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘
SpringBoot 集成 SpringSecurity + MySQL + JWT 无太多理论,直接盘 一般用于Web管理系统 可以先看 SpringBoot SpringSecurity 基于内存 ...