欢迎访问宙启技术站
智能推送

Java函数的内部类与匿名类实现方法

发布时间:2023-06-16 06:01:01

Java中的内部类与匿名类是两种特殊的类。内部类是一个定义在另一个类中的类,而匿名类是一个没有名字的类,通常用于创建临时对象。在Java中,内部类和匿名类都可以用于实现一些特殊的需求。

一、内部类的实现方法

Java中的内部类可以分为四种:成员内部类、静态内部类、方法内部类和匿名内部类。这里介绍成员内部类和静态内部类的实现方法。

1.成员内部类

成员内部类是定义在另一个类的内部的类。它可以访问外部类的变量和方法,但需要通过外部类的对象来创建内部类的对象。成员内部类定义方式如下:

public class Outer {
    private int x = 10;
    public class Inner {
        public void print() {
            System.out.println(x);
        }
    }
}

在上面的代码中,Inner类是成员内部类,它可以访问Outer类的私有成员变量x。创建成员内部类的对象需要使用“外部类名.内部类名”的方式,如下:

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print();

2.静态内部类

静态内部类是定义在另一个类的内部的静态类。它不需要通过外部类的对象来创建内部类的对象,可以直接使用“内部类名”的方式来创建内部类的对象。静态内部类定义方式如下:

public class Outer {
    private static int x = 10;
    public static class Inner {
        public void print() {
            System.out.println(x);
        }
    }
}

在上面的代码中,Inner类是静态内部类。创建静态内部类的对象可以直接使用“内部类名”的方式,如下:

Outer.Inner inner = new Outer.Inner();
inner.print();

二、匿名类的实现方法

匿名类是没有名字的类,通常用于创建临时对象。匿名类只能继承一个类或实现一个接口,它不能同时继承一个类和实现一个接口。匿名类的实现方法如下:

1.匿名内部类继承一个类

public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal() {
            public void run() {
                System.out.println("狗在跑!");
            }
        };
        animal.run();
    }
}

在上面的代码中,Animal类是一个普通类,它有一个run()方法。创建一个Animal类的匿名子类并覆盖run()方法,然后通过Animal的引用调用run()方法。

2.匿名内部类实现一个接口

public interface Action {
    void doAction();
}

public class Test {
    public static void main(String[] args) {
        Action action = new Action() {
            public void doAction() {
                System.out.println("执行动作!");
            }
        };
        action.doAction();
    }
}

在上面的代码中,创建了一个实现了Action接口的匿名类并覆盖了doAction()方法,然后通过Action接口的引用调用doAction()方法。

总结:

Java中的内部类和匿名类是Java语言中两类特殊的类,它们可以用来实现一些特殊的需求。内部类有四种类型:成员内部类、静态内部类、方法内部类和匿名内部类,而匿名内部类只能继承一个类或者实现一个接口。熟练掌握内部类和匿名类的实现方法,可以有效的提高代码的可读性和灵活性。