内部类与匿名内部类

Java内部类中的匿名内部类简介及与匿名对象的区别 匿名内部类(没有类名) 一、因为在创建匿名内部类的时候,会立即创建它的实例,可知匿名内部类不能是抽象类,所以其必须继承一个抽象类或者实现一个接口。 二、匿名内部类没有类名,因此没有构造方法。 三、匿名内部类访问的外部类成员变量或成员方法必须用static修饰; 四、匿名内部类不能定义任何静态成员、方法。 五、内部类可以访问外部类私有变量和方法。 当匿名内部类和外部类有同名变量(方法)时,默认访问的... 阅读详情

一   内部类

类中嵌套类叫内部类,包含内部类的类叫外部类;

内部类使用static 修饰叫静态内部类
外部类可以使用内部类;
外部类中静态函数不能使用new创建内部类的对象(只能创建引用类型变量),创建静态内部类对象例外;
内部类可以任意方式使用外部类;
内部类可以使用任何访问权限修饰符修饰;
内部类的访问权限对外部类没有任何约束;
内部类可以使用其它类
其它类使用内部类时受内部类的访问权限修饰符约束,约束规则与外部类的成员一样;

其它类可以创建内部类的引用类型变量,但是只能创建静态内部类的对象;

示例:

//Hello叫外部类、Stu叫内部类
public class Hello {
          public void m() {
                     Stu stu = new Stu();
                     stu.study();
          }
          public static void main(String[] args) {
                      new Hello().m();
          }
         class Stu {
                   public void study() {
                              System.out.println("Stu study()....");
                  }
         }

}

二  匿名内部类

(1)匿名内部类是在一个类中写一个没有名子的子类,或没有名字的接口实现类,并且直接创建了对象;

(2)匿名内部类的父类可以是普通类;

示例:
public class Stu {
     public void study() {
          System.out.println("good good study");
     }
     public void sleep() {
         System.out.println("sleep");
     }
}


public class Hello {
     public Stu stu  = new Stu() {
     

     };
     public static void main(String[] args) {
          Hello h = new Hello();
          h.stu.study();
          h.stu.sleep();
    }
}


public class Hello2 {
      public Stu stu  = new Stu() {
           @Override
           public void study() {
               System.out.println("好好学习");
          }
       };
       public static void main(String[] args) {
            Hello2 h = new Hello2();
            h.stu.study();
            h.stu.sleep();
       }
}

(3)匿名内部类的父类可以是抽象类

public abstract class  Stu {
     public void study() {
              System.out.println("good good study");
     }
     public void sleep() {
             System.out.println("sleep");
     }
     public abstract void go();
}

public class Hello {
         public Stu stu  = new Stu() {
                  @Override
                  public void study() {
                         System.out.println("好好学习");
                  }
                  @Override
                  public void go() {
                         System.out.println("走....");
                  }
          };
          public static void main(String[] args) {
                 Hello h = new Hello();
                 h.stu.study();
                 h.stu.sleep();
                 h.stu.go();
          }
}

(4)匿名类部类是接口的实现类

public interface Inf {
public abstract void go();
}

public class Hello {
       public Inf inf = new Inf() {
              @Override
               public void go() {
                      System.out.println("go");
                      this.xx();
               }
               public void xx() {
                      System.out.println("xx");
              }
       };
       public static void main(String[] args) {
              Hello h = new Hello();
              h.inf.go();
              //h.inf.xx();//错
       }
}

(5)前面匿名内部类对象都是为外部类的成员变量赋值,实际上匿名内部类对象也可以为外部类函数中的局部变量赋值

public interface Inf {
         public abstract void go();
}

public class Hello {
        private void test() {
                Inf inf = new Inf() {
                       @Override
                       public void go() {
                            System.out.println("go()...");
                       }
                };
       }
}

三  内部类中访问外部类对象

内部类函数中的this表示内部类对象,要得到外部类对象可使用"外部类名.this",所以访问外部类对象成员格式为:
    "外部类名.this.外部类成员"

public interface Inf

{
        public abstract void go();
}

public class Hello {
         public int x = 100;
         public void m1() {
                  System.out.println("m1....");
         }
         private void test() {
                  Inf inf = new Inf() {
                          public int x = 20;
                          @Override
                           public void go() {
                                      System.out.println("go()...");
                                      Hello.this.m1();
                                      m1();
                                      System.out.println(Hello.this.x);//100
                                      System.out.println(Hello.this.x);//20
                           }
                };
          }
}


GD32F407工程模板搭建全记录:从零整理固件库、创建文件夹到编译通过 本文详细记录了GD32F407工程模板的搭建过程,从固件库整理、目录规划到Keil环境配置,帮助开发者快速搭建可维护的嵌入式工程结构。重点介绍了开发环境搭建、工程目录设计、Keil配置及常见编译问题解决方案,适合嵌入式开发者参考。 阅读详情

相关推荐

Windows 11下Telnet端口23连接失败的终极解决方案(附详细排查步骤)

本文详细解析了Windows 11系统中Telnet端口23连接失败的常见原因及解决方案。从Telnet客户端功能启用、服务端配置检查到网络连接诊断,提供了一套完整的排查步骤,帮助用户快速定位并解决连接问题,同时给出了安全使用Telnet的建议。

win55的博客 456

go 内置类型

值类型 bool int(32 or 64),int8,int16,int32,int64 uint(32 or 64),uint8(byte),uint16,uint32,uint64 float32,float64 string complex64,complex128 array --固定长度的数组 引用类型(指针类型) slice --序列数组(最常用) map --映射 chan --管道 内置函数 go语言拥有一些不需要进行导入操作就可以使用的内置函数,它们有时可以针对不同的类

qq_36898429的博客 290

HTB_Bike靶机之模板注入

船到桥头自然直 文章目录信息收集模板引擎SSIT 模板注入后放答案 信息收集 日常 A 扫描,两个端口 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA) | 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:.

网络安全学习 798

内部类

今天就内部类做一些简单的复习 内部类:在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。 广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。 1、成员内部类 public class Outer { private static String outstr = "外部类"...

goforitaaa的博客 208

Unity中URP实现水体效果(泡沫)

在上篇文章中,我们实现了水体的深度。在这篇文章中,我们来使用上篇文章采样后的深度图来实现水中的泡沫效果。

楠溪泽岸的博客 3490

【目录】专栏文章导航

从最强工具链Davinci Configurator模块学习出发掌握AUTOSAR

weixin_47571898的博客 3299

Go学习(七):方法、面向对象

/ 系统抛a[1] = 123// 自己抛panic("半径不能为负")//// 延时执行匿名函数// 延时到何时?(1)程序正常结束 (2)发生异常时 //发生异常时// recover() 复活 恢复// 会返回程序为什么挂了err!= nil {}()fmt.Println("这里有没有执行") //没执行test03()test04()半径不能为负test04import ("fmt""os""time"op stringif err!= nil {

Lay_XZ的博客 205

Allegro因为精度问题导致走线连接不上的解决办法

在用Allegro做PCB设计的时候,尤其是从其它单板上导数据过来的时候,有时会因为精度不一致导致连接不上,如下图。一般来说,可以逐个重新连接一下,但是如果连接点位比较多的话,需要花费较多时间。下面介绍如何使用Allegro自带的功能解决这个问题,具体操作如下。和Convert Figure Stackups to vias。因为精度问题导致走线连接不上的解决办法。线和过孔因为精度有微小的连接偏差。

weixin_54787054的博客 2612

Go 面向对象(匿名字段)

严格意义上说,GO语言中没有类(class)的概念,但是我们可以将结构体比作为类,因为在结构体中可以添加属性(成员),方法(函数)。面向对象编程的好处比较多,我们先来说一下“继承”,所谓继承指的是,我们可能会在一些类(结构体)中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类(结构体)中,作为这些类的父类(结构体),我们可以通过如下图来理解:当然严格意义上,GO语言中是没有继承的,但是我们可以通过”匿名组合”来实现继承的效果。

weixin_47906106的博客 775

基于NSGA2算法的无人机三维路径规划MATLAB实现

传统的路径规划方法多采用启发式搜索算法,然而这些方法往往带着局限性,不能有效地克服无人机飞行任务中所遇到的复杂环境与约束。而基于遗传算法的NSGA2(Non-dominated Sorting Genetic Algorithm II)方法则可以在优化目标之间找到最好的平衡点,是一种十分优秀的解决方案。本文介绍了基于NSGA2算法的无人机三维路径规划MATLAB实现。NSGA2算法是一种多目标优化算法,通过非支配排序和拥挤度距离来评估个体的适应度和选择新个体,从而产生一组非支配解。3.选择新个体组成P1;

CyberLynxX的博客 982

SIMATIC WINCC V8.0安装教程(Win11系统)

SIMATIC WINCC V8.0安装教程(Win11系统)

Robot_PLC_HMI_Automation 9050

内部类以及匿名内部类

内部类 一、静态内部类(了解) 概念:如果一个类中包含了一个完整的成分,如汽车类的发动机类 格式 外部类名.内部类名 对象名 = new 外部类名.内部构造器; 例如:Outer.Inner in = new Outer.Inner(); 特点:使用与普通类一样,普通类有的成分它都有,只是位置在别的类里面 访问:可以直接访问外部类的静态成员,不能直接访问外部类的实例成员 一、成员内部类(了解) 概念:无static修饰,属于外部类的对象 注意:JDK16之前,成员内部类中不能定义静态成员变量, JDK16

weixin_50686218的博客 911

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

关于匿名内部类与回调函数

作者:步超                我们Android开发中经常用到一些匿名内部类,及其其中的回调函数,例如,我们给Button设置监听器时候通常要实现OnCLickListener接口,并重写其中的Onclick()方法,这就是匿名内部类与回调函数,那么你对Java匿名内部类以及回调函数又理解多少呢?这篇文档给予比较详细的解释。        首先应该知道,内部类是JAVA语言的主要附

移动平台应用软件开发技术 4317

NTscan扫描工具

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

内部类与匿名内部类的区别

1.内部类:A类是B类的一个成员变量,A类可以调用B类的成员变量,可以区分static,可以使用B类方法的局部变量,A类可以有多个实例 2.匿名内部类:A类是B类的一个成员,但是只有唯一的实例,不区分static,如果要调用外部类的变量,必须是类变量或者final的局部变量,多用于事件监听和线程应用

liujn347的专栏 1751

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java 匿名内部类 参数_Java匿名内部类原理与用法详解

本文实例讲述了Java匿名内部类原理与用法。分享给大家供大家参考,具体如下:一 点睛匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下:new 父类构造器(实参列表) | 实现接口(){//匿名内部类的类体部分}从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。两条规则。匿名内部类不能是抽象类。匿名内部类不能定义构造器。由...

weixin_39955825的博客 1253

Java中的内部类与匿名内部类详解

将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 匿名内部类 :是内部类的简化写法。它的本质是一个带具体实现的父类或者父接口的 匿名的 子类对象。

write less , do more 3793

Java 内部类与匿名内部类总结

Java 内部类与匿名内部类总结

m0_74871188的博客 321

java中匿名内部类,接口与抽象类

java基础之匿名内部类,接口与抽象类

简单,快乐,拥抱变化 1323

Android里面的匿名类与匿名内部类使用

A.关于回调函数        匿名内部类其中用到了回调函数,什么是回调函数呢?        所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B

Geek Time 4447

详述有名内部类与匿名内部类

内部类定义: 内部类是指在一个外部类内定义的类。 内部类分类:有名内部类与匿名部类、静态内部类与非静态内部类 按照是否有类名分为有名内部类和匿名内部类。 package pro1; public class Body { class Heart{ void work(){ System.out.println("正在跳动"); } } } 说明:全局有名内部类的使用方式类似于全局变...

x_j_k_jysg的博客 209

Java内部类之局部内部类与匿名内部类

局部内部类 局部内部类:定义在外部类成员方法方法体中的类。 局部内部类只能在方法体内部使用。 局部内部类可以在方法体内部直接创建对象。 局部内部类不能用访问控制符和static关键字修饰。 局部内部类可以使用所在方法体的局部变量,但该局部变量必须用final修饰(这是因为局部内部类使用方法中的局部变量时会将其值拷贝一份放入类中,若局部变量值发生变化,而内部类中仍旧用原来的值计算,则会造成数据的不一致性问题)。 举例: 局部内部类 public class AreaOuter { private

Demon_LMMan的博客 634

【JAVA学习笔记】匿名内部类与静态内部类

匿名内部类是一种没有名字的内部类,它在定义的同时就被实例化,通常用于简化代码,特别是在需要一次性实现某个类或接口的时候。静态内部类是使用static关键字修饰的内部类,它与外部类的其他成员不同,不依赖于外部类的实例,可以直接通过外部类的类名来访问。// 静态内部类// 非静态内部类// 实例化静态内部类// 输出:This is a static inner class.// 实例化非静态内部类需要先创建外部类实例。

weixin_48272591的博客 1798
上一篇: eclipse常用快捷方式
下一篇: java UDP/IP
wangguangrong
博客等级 码龄14年 165粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值