匿名内部类的使用

目标

1,匿名内部类的作用。

2,匿名内部类的定义格式。

具体内容

内部类:在一个类的内部还有另一个类。那么匿名类,如果一个类在整个操作中,只使用一次的话,就可以将其定义成匿名内部类

匿名内部类是在接口及抽象类的基础上发展起来的

interface A{
    public void printInfo() ;    //
}
class B implements A{    // 实现接口
    public void printInfo(){
        System.out.println("Hello World!!!") ;
    }
};
class X {
    public void fun1(){
        this.fun2(new B()) ;
    }
    public void fun2(A a){
        a.printInfo() ;
    }
};
public class NoInnerClassDemo01{
    public static void main(String args[]){
        new X().fun1() ;        // 实例化X类的对象,并调用fun1()方法
    }
};

如果此时,B类只使用一次的话,那么还有必要为其单独定义一次吗?

此时可以使用匿名内部类解决问题。如下:

interface A{
    public void printInfo() ;    //
}
class X {
    public void fun1(){
        this.fun2(new A(){    //这里所做的改变就是,把原本的B类去掉,然后在括号中的new B()改成new A()(也就是接口类)回车,给出方法的具体实现,定义内部类。相当于把B类的写的操作代码直接写到匿名内部类中。
                public void printInfo(){
                    System.out.println("Hello World!!!") ;
                }
            }
            ) ;
    }
    public void fun2(A a){
        a.printInfo() ;
    }
};
public class NoInnerClassDemo02{
    public static void main(String args[]){
        new X().fun1() ;        // 实例化X类的对象,并调用fun1()方法
    }
};

以上所做的是,在fun2的括号中实现接口,并且给出具体实现,其实就是匿名实现接口类,代替上一例中的B类

总结

1,在实际开发中,会使用各种框架,在框架上会大量使用匿名内部类。

2,匿名内部类是在抽象和接口继承上发展起来的。

时间: 2024-10-13 19:29:18

匿名内部类的使用的相关文章

IT十八掌作业_java基础第七天_匿名内部类、异常、包和jar

利用白富美接口案例,土豪征婚使用匿名内部类对象实现. 2.定义三角形类Trianle,里面包含三个int类型属性,分别表示三条边的长度, 构造三角形对象时,任意两边之和是否大于第三边,如若不成立,抛出自定义异常. 3.Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理, 要求年有效.月有效.日有效.年月日指定的具体日期有效,对不同情况分别抛出不同的异常. 4.将类定义到指定的包下.com.it18zhang,编译之后,打成jar文

包、修饰符、内部类、匿名内部类(java基础知识十)

1.package关键字的概述及作用 * A:为什么要有包     * 将字节码(.class)进行分类存放  * B:包的概述     *   * C:包的作用     * 包名要定义在第一行,     * 包名.*这个包下所有的类都可见     * 具体的类比较好,能提高效率 2.包的定义及注意事项 * A:定义包的格式 * package 包名; * 多级包用.分开即可* B:定义包的注意事项 * A:package语句必须是程序的第一条可执行的代码 * B:package语句在一个jav

我的学习之路_第三章_匿名内部类

final: final是最终修饰符,可以修饰类.成员方法.变量. final修饰的类无法被继承. final修饰的方法无法被重写. final修饰的变量无法被再次赋值,变为了常量. final修饰的引用数据类型变量,可以修改对象里面的属性内容,不可改变地址值 final修饰的成员变量,不能使用默认值,没有意义,必须在创建对象之前完成赋值. static: 静态修饰符,被static修饰的内容属于类不专属于某个对象,多个对象共享使用这一个成员 使用static修饰的成员可以用类名直接访问,建议这

“匿名内部类”的使用场合举例

package com.sxt.set6; import java.util.Comparator; import java.util.HashSet; /* * TreeSet 有序的 二叉树(红黑数) */ import java.util.Set; import java.util.TreeSet; /* * 匿名内部类 * 使用场合:只需要创建一次对象,就不在使用了,没有必要提供专门的实现类(不使用外部比较器) * */ public class TestStudent { public

匿名内部类

为什么有内部类 每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响.内部类使得多重继承的解决方案变得更加完整. 如何定义一个匿名内部类 以学校和老师的关系为例 //学校类 class School{ public static Teacher getTeacher(){ //匿名内部类 return new Teacher(){ public void teaching(){ System.out.println("张三老师在讲课&q

java9-9 匿名内部类

1. 匿名内部类 就是内部类的简化写法. 前提:存在一个类或者接口 这里的类可以是具体类也可以是抽象类. 格式: new 类名或者接口名(){ 重写方法; } new Xxx()是创建了一个对象,而抽象类和接口不能被new修饰, 所以,这里的东西的本质已经变了 那么,本质是什么呢? 是一个继承了该类或者实现了该接口的子类匿名对象. 1 interface Inter4{ 2 public abstract void show(); 3 public abstract void show2();

java 内部类3(匿名内部类)

匿名内部类: 1.没有类名的类就叫匿名内部类 2.好处:简化书写. 3.使用前提:必须有继承或实现关系......不要想着你自己没有钱你没可是你爸有 4.一般用于于实参.(重点) class Outer{ class Inner{ public void show(){ System.out.println(“内部累的show方法”); } } public void print(){ new Inner().show(); } }

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

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

面向对象、匿名内部类

1 内部类 1.1 内部类的概述 将类定义在另一个类的内部则成为内部类.其实就是类定义的位置发生了变化. 在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为成员内部类和局部内部类. 备注:内部类生产的class文件为 “外部类$内部类”,为了标明该内部类是属于具体哪个外部类的. 1.2 成员内部类的访问方式 内部类可以直接访问外部类的成员属性.(孙悟空相当于内部类飞到牛魔王的肚子里面去). 外部类需要访问内部类的成员属性时需要创建内部类的对象. 在外部类

Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类

定义:将一个类定义在另一个类的内部.内部的类称为内部类; public class Outer{ class inner{ //省略 } } 特点: ①   内部类可以很好的实现隐藏,可以使用protected,private修饰符; ②   内部类可以直接访问外部类的所有成员,包括私有成员; ③   外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才能访问; ④   内部类可以解决一些问题,比如间接的去实现多继承.可以避免修改接口而实现同一个类中两种同名方法的调用; 成员内部类及应用