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匿名内部类的初解的更多相关文章

  1. #随笔之java匿名内部类

    随笔之java匿名内部类 从今天起开始每日一篇技术博客,当然这只是我当天所学的一些随笔,里面或多或少会有理解不当的地方,希望大家多多指教,一起进步! 在讲匿名内部类之前,先讲讲内部类的一些概念. 1. ...

  2. 从一开始,说出事java匿名内部类

    java内部类.匿名类原本以为它们的使用已经很滑, 成绩, 就在昨天晚上12指向时钟发生重大事故.事故的严重程度再说吧,那是因为我没有睡一晚睡眠. 那以下先用一段模拟代码来描写叙述下我出现的问题的: ...

  3. (转)java匿名内部类详解

    原文:http://android.blog.51cto.com/268543/384844/   内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可以是静态static的 ...

  4. 【Java学习笔记之二十六】深入理解Java匿名内部类

    在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...

  5. 【50】java 匿名内部类剖析

    匿名内部类介绍: 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 匿名内部类的声明 ...

  6. JAVA匿名内部类(Anonymous Classes)

    1.前言 匿名内部类在我们JAVA程序员的日常工作中经常要用到,但是很多时候也只是照本宣科地用,虽然也在用,但往往忽略了以下几点:为什么能这么用?匿名内部类的语法是怎样的?有哪些限制?因此,最近,我在 ...

  7. Java匿名内部类访问外部

    匿名内部类访问外部局部变量必须是final修饰的,Java 1.8 会默认为其加上final 例子如下: public void send(String topicName, T obj) { Str ...

  8. 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰

    大部分时候,类被定义成一个独立的程序单元.在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类,包含内部类的类也被称为外部类. class Outer { priv ...

  9. Java 匿名内部类 & 内部类

    一.JAVA中内部类和匿名内部类的区别 内部类:内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,内部类可以实例化,多次使用. ...

  10. java匿名内部类使用场景列举

    示例一: package com;      interface Operation {       double operateTwoIntNum(int a, int b);   }      p ...

随机推荐

  1. 提供一款局域网聊天小工具,对接了chatGPT3.5

    账号.密码随便填,只要自己能记住就可以,网络地址如效果图(本机IP地址+8080端口),效果图如下 服务地址用本机IP,端口可以随便用一个,如8888,填完记得点击按钮开启: 通讯地址如果你有其他人的 ...

  2. Android Banner - ViewPager 02

    Android Banner - ViewPager 02 现在来给viewpager实现的banenr加上自动轮播 自动轮播的原理,使用handler的延迟消息来实现. 自动轮播实现如下内容 开始轮 ...

  3. Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类

    Java BasePooledObjectFactory 对象池化技术 通常一个对象创建.销毁非常耗时的时候,我们不会频繁的创建和销毁它,而是考虑复用.复用对象的一种做法就是对象池,将创建好的对象放入 ...

  4. python入门教程之三编码问题

    1编码问题 Python文件中如果未指定编码,在执行过程中会出现报错: !/usr/bin/python print ("你好,世界") 以上程序执行输出结果为: 文件" ...

  5. DG修复:清理归档配置归档清理脚本

    问题描述:DG同步断了十天,发现FRA归档盘符满了.需要清理下,重新增量恢复DG Error 12528 received logging on to the standby FAL[client, ...

  6. SELECT COUNT(*) 会造成全表扫描?回去等通知吧

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  7. springboot-poi ---封装注解式导入导出

    此demo 是基于poi封装对象式注解导入导出,项目框架为springboot项目! 简单的说明一下此demo涉及到的知识点,希望能给初学者带来方便! poi-excel 基本操作(工具) 自定义注解 ...

  8. c# 异步进阶———— 自定义 taskschedule[三]

    前言 我们知道我们的task async 和 await 是基于线程池进行调度的. 但是async 和 await 也就是使用了默认的task调度,让其在线程池中运行. 但是线程池是榨干机器性能为本质 ...

  9. CVE-2015-5254漏洞复现

    1.漏洞介绍. Apache ActiveMQ 是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持 Java 消息服务,集群,Spring Framework 等.Apache ...

  10. MySQL-InnoDB磁盘结构

    主要阐述InnoDB存储引擎(MySQL5以后的默认引擎). 数据库中最基本的组成结构是数据表,视觉上的表和其对应的磁盘结构如下: 此图参考了厦门大学课堂:MySQL原理 .但是视频中一些更多细节没有 ...