java基础之匿名内部类

内部类:
  概述: 类里边还有一个类, 里边那个类叫内部类, 外边那个类叫外部类.
 

分类:
  成员内部类: 定义在成员位置的内部类.
  局部内部类: 定义在局部位置的内部类.

格式:
  new 类名或者接口名(){
    //重写类或者接口中 所有的 抽象方法;
  };

本质:
  就是一个继承了类或者实现了接口的 匿名的子类对象. 匿名内部类不是类, 而是子类对象.


匿名内部类的实际应用:
  1) 当对 对象方法(成员方法) 仅调用一次的时候.
  2) 可以作为方法的实参进行传递.

建议:
  当接口中或者抽象类中的 抽象方法仅有一个的时候, 就可以 考虑使用匿名内部类.

 

代码说明:

public class DemoClass { //外部类
    String name;    //成员变量class Inner1 {    //成员内部类
        }//成员方法public void show() {int num = 10;    //局部变量, 基本类型
        Object obj = new Object();    //局部变量, 引用类型//局部内部类.   局部变量, 引用类型class Inner2{}}
}

 

应用举例:

public static void main(String[] args) {                   // 对, Jumpping#jump(); 调三次.                            //1) 当对 对象方法(成员方法) 仅调用一次的时候.                           Jumping jm = new Jumping() {        //多态                                                            @Override                                          public void jump() {                               System.out.println("我会跳");                     }                                                                                               };                                                     jm.jump();                                             jm.jump();                                             jm.jump();                                             //2) 可以作为方法的实参进行传递.                                    show(new Jumping() {                                   @Override                                          public void jump() {                               System.out.println("我会跳, 可以作为方法的实参进行传递");      }                                                  });                                                    
}                                                          public static void show(Jumping jm) {                      jm.jump();                                             
}                                                          public interface Jumping {final public static int num = 10;public abstract void jump();
}

 

public static void main(String[] args) {                  /*                                                    *  通过匿名内部类实现.                                    *  new 类名或者接口名(){                                    //重写类或者接口中 所有的 抽象方法;                          };                                                */                                                   new Animal() {                                        public void eat() {                               System.out.println("我是匿名内部类的方式实现的, 猫吃鱼");     }                                                 }.eat();                                              
}                                                         /*** 抽象类: Animal* @author**/
public abstract class Animal {public abstract void eat();
}

转载于:https://www.cnblogs.com/blazeZzz/p/9153747.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0限流电阻 stm32_上/下拉电阻

除了前一节讨论的拉电阻基本使用方法外,上拉电阻也可以提升高电平的电压阈值,以便于前后级信号相匹配,比如,TTL逻辑电平驱动CMOS逻辑电平时,我们通常会添加一个上拉电阻R1,如下图所示:But Why&a…

天地与我并存/万物与我为一 2

http://blog.sina.com.cn/s/blog_17e792e010102y4lu.html 庖丁解牛 先秦:庄周 吾生也有涯,而知也无涯 。以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为恶无近刑。缘督以为经&#xff0c…

网段和子网的区别_电焊石笼网与普通石笼网区别

对于石笼网,每个人都会想到在河中,桥梁附近和大坝上充满石头的笼子结构。今天,我们谈论的是石笼网的一种电焊石笼网,它也是一种常见的石笼网,也被称为六边形石笼网。其功能与石笼网相同,但用法与普通石笼网…

jquery $(document).ready() 与window.onload的区别

转载博客:http://www.jb51.net/article/21628.htm Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后…

小学三年级上册计算机计划,小学三年级数学上册教学计划

小学三年级数学上册教学计划一、班级情况分析这一学期我继续担任三年级数学教学工作,本班现有学生9人,其中男生3人,女生6人。三年级学生已经有两年的数学学习经历,对一些基础性的数学知识有了初步的认识。学生已经比较习惯于新教材…

centos7查看当前cpu运行模式_杂集:centos7中设置服务开机自启的两种方法,欢迎补充...

前言:在日常使用linux系统过程中,安装服务后系统不会自动启动服务的。就算手动启动了服务,只是当前生效,一旦服务器重启后,系统不会自动启动这些服务。如果每次重启服务器都要自己手动启动这些服务,一台还阔…

Sort HDU5884(二分+多叉哈夫曼树)

HDU5884 Sort 题意:有n个序列要进行归并,每次归并的代价是两个序列的长度的和,要求最终的代价不能超过规定的T,求在此前提下一次能同时进行归并的序列的个数k。 思路:还是太单纯,看完题目一直以为要用归并排…

python来源是什么_python起源?为什么使用python?直至爱上python的五个理由

原标题:python起源?为什么使用python?直至爱上python的五个理由Python的创始人,吉多范罗苏姆,是一名荷兰计算机程序员,他作为 Python 程序设计语言的作者而为人们熟知。在 Python 社区,吉多范罗…

Linux系统(五)负载均衡LVS集群之DR模式

序言 DR模式是lvs集群中三种负载均衡模式的其中一种,那么上一篇中我写啦关于NAT模式的搭建与原理,为什么还要有DR模式与IP隧道模式呢? 首先我们来看3张图。LVS/NAT模式如下图: LVS/IP隧道模式,如下图: LVS/…

Redux API之applyMiddleware

applyMiddleware(...middlewares) 使用包含自定义功能的 middleware 来扩展 Redux 是一种推荐的方式。Middleware 可以让你包装 store 的dispatch 方法来达到你想要的目的。同时, middleware 还拥有“可组合”这一关键特性。多个 middleware 可以被组合到一起使用&a…

计算机2018创业方向,推荐2018年创业的方向

原标题:推荐2018年创业的方向1 新电商传统的零售业收到互联网电商的重冲击,从而进行线上线下的结合是必然的趋势,新零售,新电商,是几千万零售企业成功转型的必然之路,学习一套全面的新电商转型的方法&#…

包无法安装_详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel

详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel注意:下列教程为 Windows7 64位;Windows 10有部分步骤有差异,请参考使用!01 下载Python程序安装包首先前往Python官网 www.python.org,进入官网点击 Downloads,然后点击 W…

Activity、Fragment、Dialog基类简单整理

版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 这里简单记录下Activity、Fragment、Dialog基类中的常规写法,后续根据项目需求进行相应的扩展。 BaseActivity.java package com.why.project.myapptemplet.activity;impo…

request重定向_golang不想http自动处理重定向的解决方案

前言有时候发送http请求不想让库自动帮忙处理重定向,库里面默认的是会把所有重定向都完成一遍,结果就是最后一个没有重定向的请求的结果。因此需要一种方案直接获取首次访问的结果,不走重定向。go的http库里面是使用如下代码检查重定向的&…

C语言项目开发-项目架构和编程命名规范

一个项目的流程:1、公司市场人员与客户交流,了解客户、引导客户使用公司最优资源并产出一份市场需求文档 2、公司需求人员(BA)与客户交流,了解客户需求并产出一个软件需求文档 3、项目经理、开发小组成员、需求人员&am…

ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...

ajax用户登录验证:实例html>Ajax实战:表单验证用户登录邮箱: 密码: 提交let btn document.getElementsByTagName(button)[0];btn.onclick function () {//1.创建xhr对象let xhr new XMLHttpRequest();//2.监听响应状态xhr.onreadystatechange function(){// …

将Python脚本打包成可执行文件

Python是一个脚本语言,被解释器解释执行。它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的&a…

float foo=42e1为什么错_为什么重写了equals()也要重写hashCode()

小Hub领读:虽然是很基础的一篇文章,但是对于equals、hashcode两个方法,相信很多人都与其中的规则不熟悉,来跟着小Hub花个8分钟回顾一下!作者:不学无数的程序员https://my.oschina.net/u/4030990/blog/31341…

ssh客户端_一款基于TAS框架的SSH客户端蠕虫

TEA是一款基于TAS框架的SSH客户端蠕虫,从本质上说,它是一个仿冒的SSH客户端,它能够修改tty输入/输出来实现任意命令执行,或通过SSH连接来上传自身以实现渗透感染。为了实现该工具的正常功能,远程主机需要满足以下条件&…

Selenium入门11 滚动条控制(通过js)

这一节要有js基础。做web端的UI自动化必须要有html,css,javascript前端基础。 滚动条控制: 1 移动垂直滚动条 document.documentElement.scrollTop 2 移动垂直滚动条 document.documentElement.scrollLeft 3 找到某个元素,移动到可…