22.内部类和匿名内部类

  • 什么是内部类
    • 一个类定义在另一个类的内部
  • 内部类的使用方法
    • 内部类是可以随意使用外部类当中所定义的成员变量和成员函数
    • 生成内部类对象方法:new 外部类对象 . new 内部类对象
  1. class A{
  2. int i;
  3. class B{
  4. int j;
  5. int funB(){
  6. int result = A.this.i +this.j;
  7. return result;
  8. }
  9. }
  10. }
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. A a =new A();
  4. A.B b = a.new B();
  5. a.i =2;
  6. b.j =3;
  7. int result = b.funB();
  8. System.out.println(result);
  9. }
  10. }

结果:

D:\work\src>javac *.java

D:\work\src>java Test

5

  • 匿名内部类的使用方法
    • 生成匿名内部类方法:new 一个接口后面紧跟一个类来实现这个接口,只不过这个类是没有名字的
  1. interface A{
  2. publicvoid doSomething();
  3. }
  1. class B{
  2. publicvoid fun(A a){
  3. System.out.println("B类的fun函数");
  4. a.doSomething();
  5. }
  6. }
  1. classAImpl implements A{
  2. publicvoid doSomething(){
  3. System.out.println("doSomething");
  4. }
  5. }
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. //AImpl al = new AImpl();
  4. //A a = al;
  5. B b =new B();
  6. b.fun(new A(){
  7. //和一个完整实现类的区别在于没有名字
  8. //生成了new A()的对象
  9. publicvoid doSomething(){
  10. System.out.println("匿名内部类");
  11. }
  12. });
  13. }
  14. }

结果:

D:\work\src>javac *.java

D:\work\src>java Test

B类的fun函数

匿名内部类

来自为知笔记(Wiz)

时间: 2024-10-10 02:29:29

22.内部类和匿名内部类的相关文章

Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3811445.html 一

局部内部类和匿名内部类的对比

创建内部类的典型的方式是在一个方法体的里面创建,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,以及此外围类的所有成员.下面的例子对局部内部类与匿名内部类的创建进行了比较. 具体代码实现: 1 package thinking.in.java.demo; 2 3 //定义一个接口 4 interface Counter { 5 int next(); 6 } 7 8 // 主类LocalInnerClass 9 public class LocalInne

java-07 内部类、匿名内部类、局部内部类、lambda

本文主要记录内部类.匿名内部类.局部内部类.lambda表达式的用途和lambda表达式的推导及使用 1.直接内部类 直接内部类可以分为两种: 成员内部类和静态内部类 1.1 成员内部类 成员内部类,就如同成员一样存在一个类中,该内部类可以直接访问外部类成员和方法,但是外部类不能使用内部类方法或者属性. 成员内部类访问外部类属性或方法的方式: 外部类名.this.成员名/方法名 成员内部类声明方式: (假设外部类叫Outer 内部类叫Inner)  Outer.Inner inner = new

Java内部类:匿名内部类(四)

Java内部类分为4个部分进行阐述,分别为概览.成员内部类.局部内部类和匿名内部类. 在本文中是Java内部类的匿名内部类,主要讲述匿名内部类的概念.匿名内部类的好处.匿名内部类的使用前提.和匿名内部类的应用场景. 1.匿名内部类的概念 没有类名的类就称作为匿名内部类 2.匿名内部类的好处 简化书写 3.匿名内部类的使用前提 必须存在继承或者实现关系才能使用 4.匿名内部类的应用场景 匿名内部类一般是用于实参 示例代码: package com.rk.innerclass; public cla

19、局部内部类和匿名内部类

package com.lei.duixiang; /** * 局部内部类 * 1.如果需要在方法中使用局部变量,该局部变量需要被设置为 final 类型 * 2.换句话说,在方法中定义的内部类只能访问方法中 final 类型的局部变量 * 这是因为在方法中定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期 * 由于该局部变量被设置为final,所以不能在内部类中改变局部变量的值 * @author Administrator * * 匿名内部类 OutClass4 */ inte

内部类 和匿名内部类的基本应用

自己的笔记: 内部的访问规则: 内部类可以直接访问外部类的成员,包括私有. 外部类要想访问内部类,必须建立对象. 之所以可以直接访问外部类的成员,因为内部类持有外部类的引用,格式:Outer.this.x 访问格式: 在内部类定义在外部类中的成员位置上,而且是非私有,可以在外部的其他类中. 可以直接建立内部类的对象. 格式:1. 外部类.内部类 变量名 = 外部对象.内部对象; Outer.Inner in = new Outer().new Inner(); 2. 当内部类在成员位置上,就可以

Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液.跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为心脏不能脱离人体而存活,当然不考虑现今社会的发达科技,只从正常情况下来说),所心脏以需要写在人类的内部.内部类就相当于其中的某个器官之一. 首先看看什么是内部类:在类的内部定义另一个类.没错

黑马程序员-----内部类、匿名内部类应用

class Outer{ // 定义外部类private String info = "helloworld" ; // 定义外部类属性private static String info2 = "helloeclipse"; // 定义静态变量class Inner{ // 定义内部类public void print(){// 内部类的好处之一:直接访问外部类属性System.out.println(info) ; // 直接访问外部类属性}}static cl

java面对对象(六)--内部类、匿名内部类

内部类 可以在一个类的内部定义另一个类这种类成为内部类或嵌套类,比如: 1 class Outer{ 2 - 3 class Inner{ 4 -. 5 } 6 } 7 class Outer1{} // 这个Inner1不是Outer1的内部类,不在Outer1的类体括号内 8 class Innter1{ 9 -- 10 } 11 Class Outer2{ //Inner2虽然是在Outer2的方法内,但还是在Outer2的类体括号内,是内部类 12 -- 13 public void t