java记录-关于内部类的使用

本文详细介绍了Java内部类的概念,包括静态内部类与非静态内部类的区别、创建方式及匿名内部类的使用方法。通过实例展示了不同内部类的特点及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.何为内部类:顾名思义就是包含在类中的类,就叫做内部类,内部类就两种:静态内部类和非静态内部类;

2.静态内部类:

public class School{

    private static School school = null;

    static class Teacher {}        

}

非静态内部类:

public class School {

    private String name;

    class Teacher {}

}

3.两者之间的区别

    静态内部类是属于外部类的类成员,是一种静态的成员,是属于类的,类似于静态变量,符合静态的特性;非静态内部类,是属于外部类一个的实例对象的一个实例成员,就是说:每个非静态内部类,不是属于外部类的,而是属于外部类的每一个实例的,创建每一个非静态内部类实例以后,这个实例是必须跟外部类的实例进行关联和有寄存关系的。

4.两者创建方式的区别

    创建静态内部类的方式:直接使用(外部类.内部类())的方式创建,比如new Teacher.Student();创建非静态内部类的时候,必须要首先创建一个外部类的实例,然后通过外部类的实例再来创建非静态内部类,比如new Teacher().Student(); 通常为了方便会选择使用静态内部类

5.匿名内部类的使用方法

    样例:

    public interface ISayHello{

        String sayHello(String name);

    }

    public class SayHelloTest{

        public static void main(String [] args){

            ISayHello say= new ISayHello() {

                public String sayHello(String name){ return "hello,"+name; }

            }

            System.out.println(say.sayHello("lala"));

        }

    }

匿名内部类的使用场景:通常来说,就是一个内部类,只要创建一次,使用一次,以后就不再使用的情况下,就可以

那么,此时,通常不会选择在外部创建一个类,而是选择直接创建一个实现了某个接口、或者继承了某个父类的内部类,而且通常是在方法内部,创建一个匿名内部类。

在使用java进行spark编程的时候,如果使用的是java7以及之前的版本,那么通常在对某个RDD执行算子,并传入算子的函数的时候,通常都会传入一个实现了某个Spark Java API中Function接口的匿名内部类。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值