黑马程序员 Java中的匿名类和内部类

CUPED (Controlled-experiment using Pre-Experiment Data) 论文学习笔记 CUPED是一种用于提升A/B测试灵敏度的方差缩减技术。它通过利用实验前用户行为数据(协变量X)构建调整后的指标Y_cuped=Y-θ(X-E[X]),其中θ=Cov(Y,X)/Var(X)。这种方法能在保持处理效应估计无偏的前提下,将方差降低1-ρ²倍(ρ为前后指标相关性)。CUPED的核心优势在于:不改变平均处理效应的估计,但能显著提升统计功效,使得实验更容易检测到微小但真实的效应,同时减少所需样本量或实验周期。该技术特别适用于用户异质性大、指标方差高的场景。 阅读详情

------- android培训、java培训、期待与您交流! ----------

匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。

java 代码

  1. interface pr   
  2. {   
  3. void print1();   
  4. }   
  5.   
  6. public class noNameClass    
  7. {   
  8. public pr dest()   
  9. {   
  10.     return new pr(){   
  11.      public void print1()   
  12.      {   
  13.       System.out.println("Hello world!!");   
  14.      }   
  15.     };   
  16. }   
  17.   
  18. public static void main(String args[])   
  19. {   
  20.     noNameClass c=new     noNameClass();   
  21.     pr hw=c.dest();   
  22.     hw.print1();   
  23. }   
  24. }   
  25.   

pr也可以是一个类但是你外部调用的方法必须在你的这个类或接口中声明外部不能调用匿名类内部的方法

Java中内部匿名类用的最多的地方也许就是在Frame中加入Listner了吧。
如下:

java 代码
  1. import java.awt.*;   
  2. import java.awt.event.*;   
  3.   
  4. public class QFrame extends Frame {   
  5.     public QFrame() {   
  6.            this.setTitle(\"my application\");   
  7.   
  8.            addWindowListener(new WindowAdapter() {   
  9.                    public void windowClosing(WindowEvent e) {   
  10.                    dispose();   
  11.                    System.exit(0);   
  12. }   
  13.             });     
  14.   
  15.           this.setBounds(10,10,200,200);   
  16.      }   
  17. }   

内部匿名类,就是建立一个内部的类,但没有给你命名,也就是没有引用实例的变量。
new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
             dispose();
             System.exit(0);
     }
} 
    new 是建立一个 WindowAdapter对象 ,后面一个 {} 表示这个括号中的操作作用于这个默认的对名象,而上面的Java程序中后面是一个函数体。
这个用法的作用是:创建一个对象的实例,并且 override 它的一个函数。打开 WindowAdapter 的代码可以发现。它是一个抽象类。它是对 WindowListener 接口的一个实现。Frame.addWindowListner(); 的参数是一个 WindowListner ,而实现上是传一个从WindowAdapter 派生出的一个匿名类。

1.怎样判断一个匿名类的存在啊?看不见名字,感觉只是父类new出一个对象而已,没有匿名类的名字。

先看段伪代码
abstract class Father(){
....
}
public class Test{
   Father f1 = new Father(){ .... }  //这里就是有个匿名内部类
}
一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new 的是Father的实现类,这个实现类是个匿名内部类。
其实拆分上面的匿名内部类可为
class SonOne extends Father{
  ...       //这里的代码和上面匿名内部类,大括号中的代码是一样的
}
public class Test{
   Father f1 = new SonOne() ;
}

2.匿名内部类的注意事项

   注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。

在使用匿名内部类时,要记住以下几个原则:
 ·匿名内部类不能有构造方法。  
 ·匿名内部类不能定义任何静态成员、方法和类。  
 ·匿名内部类不能是public,protected,private,static。  
 ·只能创建匿名内部类的一个实例。
  ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。  
 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

  ·内部类只能访问外部类的静态变量或静态方法。

 

匿名类和内部类中的中的this :
有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名

3.匿名内部类的作用

    Java的内部类和C++中的嵌套类有本质的不同:C++的嵌套类没有指向包装类的句柄。仅仅表达一个封装的概念;但是Java的内部类不同,它可以访问包装类的成员(这表示它拥有指向包装类的句柄)。
     匿名内部类是内部类的一种简化写法:return new Wrapper {
                                        ...
                                     };
     等价于:Wrapped extends Wrapper {
          ...
          }
          return new Wrapped();

  难道匿名内部类就只这一点作用吗?
  考虑一下这样的case:

  interface ICount {
    int count();
  }
 
  class Parent {
    int i = 0;
    int count() {
      return i++;
    }
  }
       有一个类Child,它既想继承Parent的count()方法,又想实现ICount接口中的count方法,这个时候怎么办呢?内部类就可以大显身手了:
  class Child extends Parent {
    ICount getCount() {
      return new ICount {
        int i = 0;
        int count() {
         return (i *= 2);
        }
      }
    }
  }

【AUTOSAR-CanNM】-3.1-如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出) 如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出) 阅读详情

相关推荐

概率论与数理统计基础概念与重要定义汇总

文章目录一、随机事件和概率1:互斥,对立,独立事件的定义和性质。2:概率,条件概率和五大概率公式3:古典型,几何型概率和伯努利试验 一、随机事件和概率 1:互斥,对立,独立事件的定义和性质。 互斥事件\color{red}\textbf{互斥事件}互斥事件 事件A和B的交集为空,A与B就是互斥事件,也叫互不相容事件。也可叙述为:不可能同时发生的事件。如A∩B为不可能事件(A∩B=Φ),那么称事件A与事件B互斥,其含义是:事件A与事件B在任何一次试验中不会同时发生。 则P(A+B)=P(A)+P(B)(这个公

csyifanZhang的博客 1万+

java匿名内部类

转自:http://blog.sina.com.cn/s/blog_62ea4cf40100mubj.html 匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一...

weixin_30270889的博客 203

MICS-6814多气体传感器与ESP32-C3 Mini接口构建空气监测系统

cararenuity C3 Mini的多个ADC引脚,Wi-Fi和蓝牙LE以及紧凑的设计使其成为嵌入式物联网应用的绝佳选择。在这个项目中,我们将把MICS-6814多气体传感器与基于esp32 -C3的开发板cararenuity C3 Mini连接起来。更多模拟引脚:与ESP8266只有一个ADC引脚不同,基于esp32 -C3的cararenuity C3 Mini提供多个ADC引脚,使其成为多传感器应用的理想选择。紧凑可靠:该板的小尺寸使其成为嵌入式应用的理想选择,而不会牺牲性能。

hie98894的博客 769

Java中匿名内部类的作用

匿名内部类是内部类的一种简化写法:return new Wrapper {   ...   };   等价于:Wrapped extends Wrapper {   ...   }   return new Wrapped();   难道匿名内部类就只这一点作用吗?   考虑一下这样的case:   interface ICount {   int count();   }...

talentluke的专栏 441

AntV G6边动画实战:手把手教你实现数据流向箭头与虚线流动效果

本文详细解析了如何使用AntV G6实现数据流向箭头与虚线流动效果,通过自定义边动画提升数据可视化的动态表现力。从基础环境搭建到核心概念讲解,再到虚线流动动画和箭头路径动画的具体实现与参数调控,帮助开发者掌握G6边动画的高级技巧,适用于网络流量监控、数据传递等场景。

weixin_28487433的博客 264

【飞控】PX4 Autopilots与MATLAB/Simulink联合仿真环境搭建全攻略

本文详细介绍了在Windows系统上搭建PX4 Autopilots与MATLAB/Simulink联合仿真环境的完整流程。通过WSL2安装Ubuntu,配置UAV Toolbox支持包,并重点解决了PX4源码克隆、子模块更新等网络难题,最终实现软件在环(SITL)仿真。文章还涵盖了硬件在环(HITL)配置及常见问题排查,为无人机飞控算法开发与测试提供了高效、可靠的解决方案。

weixin_29201933的博客 547

Java的匿名内部类详细解读

**# 一、匿名内部类的定义 最本质的还是一个类 是一个内部类(有关内部类的内容不在这里讲述了) 该类没有名字(但是系统会分配一个代号在内存中) 二、匿名内部类的应用场景 假设我们有一个接口A 内部有一个未被实现的方法eat 如果我们想在main中直接调用eat方法 则按照传统思路需要一个类B来实现接口A,同时再创建类B的对象来调用A 代码如下: public class Interface01 { public static void main(String[] args) {

xueyukun1的博客 2万+

Robocorp+Robot Framework学习记录【初学者课程:一级课程】

以下内容均来自:https://robotframework.org/?tab=2#getting-started。通过官网的学习和本地实际安装使用体验而来,本文仅记录学习过程。 Robot Framework介绍 Robot Framework 是一个通用的开源自动化框架。它可用于测试自动化和机器人过程自动化 (RPA)。 Robot Framework环境配置及安装 具体请见:Win10环境下安装pytho、pip与Robot Framework 学习过程与等级划分 官方认为Robot Framew.

OwenDom的博客 5373

java匿名内部类详解

匿名内部类,顾名思义,就是没有名字的类,匿名内部类格式如下: new name(parameter) { ...... } name:父类或是接口的名字。 parameter:若name为父类,则parameter为父类构造函数的参数。 匿名内部类具有一系列的限制,原因待会解释: 1、不能具有static成员域和成员函数和类。 2、不能具有static fin

菜到怀疑人生的博客 7956

Minitab田口设计实战:如何用正交试验优化遗传算法参数(附完整操作步骤)

本文详细介绍了如何利用Minitab田口设计进行遗传算法参数优化,通过正交试验方法显著提升效率。文章涵盖实验设计、Minitab操作步骤、结果分析及高级技巧,帮助工程师快速掌握这一工业级优化技术,实现算法性能的显著提升。

wind6的博客 863

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

Java基础之匿名内部类,匿名内部类是什么?为什么要用匿名内部类,匿名内部类详解。

Java基础之匿名内部类,匿名内部类是什么?为什么要用匿名内部类,匿名内部类详解。 什么是匿名内部类? 顾名思义 匿名 就是没有名字,一个没有名字的内部类,称为匿名内部类。 下面先看一个例子,比如说你想和你的女朋友去看春节档的《唐人街探案三》 这个时候我们要先定义一个接口,去看唐探3的接口 public interface MyInterface { // 看电影的抽象方法 void watchFilm(); } OK!现在我们有了一个接口,接口里面有一个看电影的抽象方法。而现在你要去看电

weixin_46066689的博客 3879

运营商拼命封杀的PCDN到底是个啥?

最近一段时间,很多宽带用户发现自家的网速莫名其妙变慢了,甚至收到了运营商发来的“违规使用宽带”警告短信,严重的甚至直接被断网。很多人一头雾水:我交了钱办的宽带,自己买的插件或者京东云、网心云这些硬件赚点“电费”,怎么就成了运营商眼中的“过街老鼠”?今天,我们就把这层窗户纸捅破,深度剖析这个让互联网大厂省下几十亿、让运营商恨得牙痒痒、让用户夹在中间进退两难的技术黑话——。

网络技术联盟站 915

黑马程序员--java基础复习--内部类和匿名类

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------   内部类是指在一个外部类的内部再定义一个类,内部类是作为外部类的成员而存在的,其依附于外部类。   为什么需要内部类呢?每个内部类可以独立的继承继承一个接口的实现,当然也可以实现不同的接口,所以无论外部类是否已经继承该接口的实现...

liujkh123的博客 175

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java匿名类,Java匿名内部类

匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。

Itmastergo的博客 541

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

黑马程序员——匿名类的学习总结

在学习“交通灯管理系统”的时候接触过yi

lianglv123的专栏 452

NTscan扫描工具

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

黑马程序员--------内部类和外部类

(一) 内部类(InnerClass)和内部类 类可以有两种重要成员:成员变量和方法,还可以有一种成员:内部类。内部类是在一个类的内部嵌套定义的类,它可以是其它类的成员,也可以在一个语句块的内部定义,还可以在表达式内部匿名定义。 内部类有如下特性: ◇ 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。名字不能与包含它的类名相同。 ◇ 可以使用包含它的类的静态和实例成员变量

xuanxuanzhenzhen的专栏 666

黑马程序员——OC—类方法及匿名类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——— 类方法及匿名类 1、类方法概述 实例方法就是一个方法,它在类的一个具体实例的范围内执行。也就是说,在你调用一个实例方法前,你必须首先创建类的一个实例。 而类方法,比较起来,也就是说,不需要你创建一个实例。 +表示类方法,就是类调用方法,不依赖于任何对象的方法。 -表示是实例(对象)方法,只能

liuming_xing_cool的博客 617

黑马程序员----【javaSE基础】代码练习--内部类

简单说,内部类就是在一个类中可再内含一些“类”的结构定义。 当内部类只对外围类的内容有意思,或者当它的功能需要依赖其“外围类” 时,就可以让它成为内部类,而非一般对立的类。 匿名类大多用于成员函数之内 再贴个我的代码 /*创建一个类DotNew,在此类内部定义一个内部类Inner,生成一个内部类对象*/ public class DotNew { public c

❤鑫鑫向荣❤ 561

黑马程序员-----java基础九(java内部类)

------- android培训、java培训、期待与您交流! ---------- 黑马程序员-----java基础九(java内部类) 内部类: (注:所有使用内部类的地方都可以不用内部类,使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构)。 内部类是指在一个外部类的内部再定义一个类。 内部类作为外部类的一个成员,并且依附于外部类而存在的。 内部类可为静态,可用prot

tongxinglo的专栏 397

黑马程序员——Java---匿名内部类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  匿名内部类 匿名内部类就是在类的内部创建一个匿名类,这样的类叫做匿名内部类 匿名内部类必须继承一个类或者实现一个接口 class outer          //外部类 {  /*  下面类成员函数show中创建的匿名内部类与此处声明的内部类作用一致,都是继承自demo类,并复写

xiedongchi的博客 391

黑马程序员+对Java中匿名内部类总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   在学习图形化界面时,我发现监听机制中事件处理时用到匿名内部类,感觉在前面的基础学习中也用到过,我又回去查了一下,果然在Java面向对象中出现过,为此我用思维导图及代码对匿名内部类作了一些总结,由于本人能力有限。可能会有一些不完善或错误的地方,敬请指正,谢谢! 图1 匿名内部类

zwp2011204608的博客 384

Java内部类的概述和匿名内部类的格式

黑马程序员:Java学科-内部类的概述和匿名内部类的格式 转载自百家号作者:啊窝额1 今日内容: 内部类教学目标: 能够说出内部类的概念一、内部类 概述:什么是内部类的定义将一个类A定义在另一个类B里面,里面的那个类A就被称为内部类,B则称为外部类 成员内部类:是定义在类中方法之外的类 定义格式如下所示: 在描述事物的时候,若一个事物内部还包含其他事物,就可以...

成长日记的博客 657

黑马程序员---6、内部类(InnerClass)和常用类

内部类(InnerClass)和常用类          类可以有两种重要成员:成员变量和方法,还可以有一种成员:内部类。内部类是在一个类的内部嵌套定义的类,它可以是其它类的成员,也可以在一个语句块的内部定义,还可以在表达式内部匿名定义。 内部类有如下特性:      ◇ 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。名字不能与包含它的类名相同。      ◇ 可以

u011499445的专栏 874

黑马程序员 匿名内部类连名字都没有,会有构造函数么?

---------------------- ASP.Net+Android+IO开发S、<a href="http://edu.youkuaiyun.com"target="blank">.Net培训、期待与您交流! ---------------------- 我在上一篇博客中说到匿名内部类,里面提到一句话,说匿名内部类是没有构造函数的,但是却可以实例化一个对象,这是百度的,我第一次看到这句话时

s80900999163的专栏 3079

黑马程序员——分析匿名内部类使用外部定义的对象

在分析之前,首先说一下内部类定义在局部的特点。         内部类被定义在局部时:        1. 不可以被成员修饰符修饰;        2. 可以直接访问外部类中的成员,因为还持有外部类中的引用;        3. 但是不可以访问它所在局部中的变量,只能访问被final修饰的局部变量。     其中,匿名内部类其实就是一条特殊的语句,被定义在方法中,所以,匿名内部类也属于被

codeting的博客 2262
上一篇: Java基础教程 02
下一篇: 黑马程序员 Java的面向对象特性
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值