匿名内部类的结构有以下2种:
new interfacename(){......};
new superclassname(){......};
需要注意的地方:
匿名内部类由于没有名字,所以它没有构造函数(但是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化它的成员变量,有下面几种方法:
1,如果是在一个方法的匿名内部类,可以利用这个方法传进你想要的参数,不过记住,这些参数必须被声明为final。
2,将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。
3,在这个匿名内部类中使用初始化代码块
使用内部类的优点:
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。即内部类实例对包含它的哪个类的实例来说,是特权的。
2.对于同一个包中的其他类来说,内部类能够隐藏起来,换句话说,内部类不管方法的可见性如何,那怕是public,除了包容类,其他类都无法使用它。
3.匿名内部类可以很方便的定义回调。
4.使用内部类可以非常方便的编写事件驱动程序。
例子:
一个Animal接口
public interface Animal {
public String getCry();
public String getName();
}
一个Dog类
public class Dog {
private String name;
public Dog(String str){
this.name=str;
}
public String getDogName(){
return this.name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
测试类
public class AnonymousTest {
private String x="喵喵~~";
private String y="cat";
public static void main(String[] args) {
AnonymousTest t=new AnonymousTest();
Animal animal= t.CreateAnimalByInterface();
System.out.println(animal.getCry());
System.out.println(animal.getName());
Dog d=t.CreateAnimalByClass("boyu");
System.out.println(d.getDogName());
}
public Animal CreateAnimalByInterface(){
//new interfacename(){......};
return new Animal(){
//任何外部类都无法条用该方法,除非在接口或继承类中实现
public String top(){
String top="匿名类内参数~~";
return top;
}
@Override
public String getCry() {
return getX();
}
@Override
public String getName() {
return getY();
}
};
}
public Dog CreateAnimalByClass(String x){
// new superclassname(){......};
return new Dog(x){
@Override
public void setName(String str) {
super.setName(str);
}
@Override
public String getDogName() {
return super.getName();
}
};
}
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
}
分享到:
相关推荐
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不需要定义一个单独的类的情况下创建类的实例。这在处理回调、事件监听、单例模式以及其他需要短时间内定义一个简单类的情况时非常有用。本篇文章将...
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义单独类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的需求。在Java编程中,匿名内部类主要用于事件处理、回调...
16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名内部类.zip16.java匿名...
Java匿名内部类在创建登录界面中的应用主要体现在事件监听机制和界面组件的设置上。本文将详细阐述如何利用这些技术构建一个登录窗口。 首先,Java Swing库提供了丰富的组件用于创建图形用户界面(GUI)。在创建...
### 使用Java匿名内部类实现一个简单的线程池 #### 一、引言 在现代软件开发中,线程池是管理并发任务的重要工具之一。它能够有效地控制运行中的线程数量,合理分配系统资源,避免频繁创建销毁线程带来的性能开销...
Java匿名内部类是一种特殊的内部类,它没有名称且可以直接实现接口或继承类。这种特性使得匿名内部类在Java编程中非常灵活,常用于简洁地处理一次性或者临时性的代码实现。在本文中,我们将深入探讨Java匿名内部类的...
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义完整类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的情况,尤其是在需要简洁代码的地方。以下是对Java匿名内部...
使用swift匿名内部类,实现jave匿名内部类功能,java中的匿名内部类,可以做到的是,就是想要重写一个类中的方法,并且执行,但是不想重新定义一个类,因为只调用一次,或者调用多次,但是每次调用的实现过程都不同,这时候就...
Java匿名内部类原理与用法详解 Java匿名内部类是一种特殊的内部类,它没有明确的类名,并且只能被使用一次。匿名内部类可以继承一个父类或实现一个接口,但是不能继承多个父类或实现多个接口。匿名内部类不能是抽象...
Java 中的匿名内部类总结 Java 中的匿名内部类是一种特殊的内部类,它没有名字,因此也称为匿名类。匿名内部类是一种简洁的编程方式,能够简化代码编写,但它也有一些限制和特点。 匿名内部类的定义 匿名内部类是...
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义单独类的情况下创建类的实例。这种类型的内部类通常用于简化代码,尤其是在处理回调、事件监听或需要快速实现一个接口的情况。下面我们将详细...
"java匿名内部类实例代码详解" Java匿名内部类是一种特殊的内部类,它没有类名,不能显示的调用new方法来创建对象。匿名内部类通常用来实现某些特殊的功能,例如在事件处理中,经常使用匿名内部类来实现事件处理器...
在Java编程语言中,内部类和匿名内部类是两种特殊类型的类,它们为代码的组织和功能实现提供了独特的灵活性。本教程"Java4Android 35_内部类和匿名内部类"深入探讨了这两个概念,旨在帮助开发者更好地理解和运用它们...
Java匿名内部类是一种特殊的类,它没有名称,主要用于简化代码,特别是当类只在一个地方使用时。这种类可以在声明变量的同时被定义,并且可以继承一个类或者实现一个接口。下面我们将详细探讨Java匿名内部类的概念、...
Java匿名内部类是一种特殊的类,它没有被赋予一个独立的名称,而是直接在使用时定义。这种类通常用于快速实现某个功能,特别是当只需要用一次的情况。匿名内部类可以是类的子类(继承)或者实现一个接口。下面将详细...
内部类分为几种类型,包括成员内部类、局部内部类、匿名内部类以及方法参数内部类。 1. **成员内部类**:成员内部类就像是外部类的一个普通成员,可以是静态或非静态的。非静态内部类拥有对外部类的引用,可以直接...
java匿名内部类笔试题
Java中的匿名内部类是一种特殊的类,它没有名称且通常用于一次性使用的情况,目的是简化代码编写。下面我们将深入探讨匿名内部类的各个方面。 1. **匿名内部类定义**: 匿名内部类,正如其名,是没有名字的类。它...
170331-01.匿名内部类总结.java 170331-01.匿名内部类总结.java 匿名 内部类 总结 java
在Java编程语言中,匿名内部类是一种特殊的类,它没有名字,通常用于简化代码和实现特定功能,如事件处理或接口快速实现。在Android开发中,匿名内部类的应用尤其广泛,因为Android框架中的许多组件(如按钮、文本...