package tigers;
class Super{
protected String name;
public Super(String name) {
this.name = name;
}
public void append(int ch) {
//do nothing
}
public String getName() {
return this.name;
}
}
public class Tiger35 {
public Super getSuper(String name) {
return new Super(name) {
public void append(int ch) {
super.name += "*" + ch;
}
public String toString() {
return "一个匿名内部类:";
}
};
}
public static void main(String[] args) {
Tiger35 t35 = new Tiger35();
Super s = t35.getSuper("bitan");
for (char c = 'Z'; c < 'a'; c++) {
s.append(c);
}
System.out.println(s + s.getName());
}
}
结果:
一个匿名内部类:bitan*90*91*92*93*94*95*96
结论:
一、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。
二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。
三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。
分享到:
相关推荐
- 匿名内部类不能有构造器,但可以通过初始化块来传递参数。 学习“Java4Android 35_内部类和匿名内部类”这个教程,开发者将掌握如何有效地利用内部类和匿名内部类,提升代码的结构和功能,特别是在Android应用...
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不需要定义一个单独的类的情况下创建类的实例。这在处理回调、事件监听、单例模式以及其他需要短时间内定义一个简单类的情况时非常有用。本篇文章将...
内部类分为几种类型,包括成员内部类、局部内部类、匿名内部类以及方法参数内部类。 1. **成员内部类**:成员内部类就像是外部类的一个普通成员,可以是静态或非静态的。非静态内部类拥有对外部类的引用,可以直接...
- **匿名内部类作为参数**: ```java interface MyInterface { void myMethod(); } public class Test { public void execute(MyInterface myInterface) { myInterface.myMethod(); } public static ...
在`main`方法中,我们创建了一个`CallbackDemo`实例并调用了`performAction`方法,传入一个匿名内部类作为参数。这个匿名内部类实现了`CallbackInterface`并提供了`onCompletion`方法的实现。当`performAction`中的...
如果基类需要带参数的构造器,匿名内部类可以传递这些参数。如: ```java public class Parcel7 { public Wrapping wrap(int x) { return new Wrapping(x) { public int value() { return super.value() * 47;...
在这个示例中,我们创建了一个继承自`Person`类的匿名内部类,并通过`Person`类型的变量`p`引用它。接着调用了`sayHello`方法。 ### 总结 通过以上内容,我们可以看到Java中的匿名对象和匿名内部类都是十分实用的...
当需要快速实现一个接口的所有方法而不想创建单独的类时,匿名内部类就显得非常有用。以下是一个简单的例子: ```java public interface FlyAble { void fly(); } public class Main { public static void main...
在多线程编程中,我们常常使用匿名内部类来创建Thread或Runnable对象,简化代码的同时提高了可读性。 `Runnable`和`Callable`接口都是用于多线程编程的。`Runnable`接口只有一个`run()`方法,当创建一个Thread对象...
在使用匿名内部类时,要记住以下几个原则:匿名内部类不能有构造方法、匿名内部类不能是public、protected、private、static、只能创建匿名内部类的一个实例、匿名内部类不能定义任何静态成员、静态方法、一个匿名...
匿名内部类还可以通过继承其他类来创建,例如,可以创建一个继承自 `MouseListener` 的匿名类,然后将其作为参数传递给组件的 `addMouseListener` 方法。这种方式在图形用户界面(GUI)编程中尤为常见,因为它允许...
本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...
Java中的匿名内部类是Java语言的一个独特特性,它允许我们在不需要定义一个完整的新类的情况下创建对象。这在处理一些临时性的、与特定上下文相关的类时特别有用。本篇文章将深入探讨匿名内部类的概念、使用场景以及...
而且匿名内部类的定义与创建该类的一个实例同时进行,即在类的定义前面有一个new运算符,而不是使用关键字class,同时带上小括号"()"表示创建对象。创建匿名内部类并访问成员的语法格式如下: ( // 创建匿名内部类...
Java编程语言中的匿名内部类是Java面向对象特性的一个重要组成部分,它允许我们在不定义一个完整的新类的情况下,创建类的实例。在徐培成老师的"Java基础第06天-04.匿名内部类1"课程中,我们将深入探讨这个主题。 ...
内部类的一个主要应用场景是创建与外部类密切相关的辅助类,比如在清单B中,`LinkedList`类的内部定义了`Node`类,这使得`Node`类的逻辑更加封装,仅在`LinkedList`内部使用,提高了代码的可读性和可维护性。内部类...
1. **简化代码**:当只需要使用一次的类实现某个接口或继承某个类时,使用匿名内部类可以避免创建单独的类文件,使得代码更加简洁。 2. **快速实现接口**:在需要快速实现一个接口,且仅在当前方法中使用的情况下,...
例如,`Runnable`接口常用于线程,我们可以通过匿名内部类快速创建一个线程并实现run()方法。 2. **Lambda表达式**: Lambda表达式是Java 8的核心特性之一,它提供了一种简洁的表示函数式接口实现的方式。传统的...
内部类主要分为四种类型:静态内部类、成员内部类、局部内部类和匿名内部类。 1. 静态内部类(Static Inner Class) 静态内部类与普通的类类似,只是它们定义在外部类中,并且前面带有 `static` 关键字。它们不会...