//定义一个抽象类
abstract class A {
abstract public void fun1();
}
class Outer {
public static void main(String[] args) {
//定义一个继承自抽象类的内部类
class Inner extends A{
//覆写抽象方法
public void fun1(){
System.out.println("public void fun1()");
}
}
//创建一个匿名外部类并调用一个外部类方法
//传递一个匿名内部类对象
new Outer().callInner(new Inner());
}
public void callInner(A a){
a.fun1();
}
}
效果:
public void fun1()
//定义一个抽象类
abstract class A2 {
abstract public void fun1();
}
class Outer2 {
public static void main(String[] args) {
//创建一个匿名类并调用该类 的一个方法
//传递一个继承自抽象类的子类的匿名对象
new Outer2().callInner(new A2(){
public void fun1(){
System.out.println("public void fun1()");
}
});
}
public void callInner(A2 a){
a.fun1();
}
}
效果:
public void fun1()
分享到:
相关推荐
匿名内部类是指没有名字的内部类,它是继承一个父类或实现一个接口的子类。匿名内部类只能使用一次,因为它没有名字,因此不能被重复使用。 匿名内部类的特点 1. 匿名内部类只能使用一次,因为它没有名字。 2. ...
- **继承抽象类**:匿名内部类也可以继承一个抽象类,并提供未实现的方法的实现。 5. **匿名内部类的应用场景** - **事件监听**:在Swing或Android开发中,常用于创建事件监听器。 - **简洁的代码**:在只需要一...
- 自Java 8引入lambda表达式后,匿名内部类的一些用途被替代,因为lambda可以更简洁地表示单抽象方法的接口实现。然而,对于非函数式的复杂逻辑,匿名内部类仍然是一个有用的工具。 7. **线程**: - 匿名内部类也...
在这个例子中,`ConcreteCreator`类的`getCreator`方法返回了一个实现了`Creator`接口的匿名内部类实例。这种方式使得我们能够在不改变`ConcreteCreator`类的情况下,改变产品创建的逻辑。 接下来,我们可以对比另...
匿名内部类是Java编程语言中一个独特而强大的特性,它允许开发者在不定义单独类的情况下实现接口或继承抽象类。这种类没有名称,通常用于快速实现特定功能或回调机制,尤其是在处理事件监听器时非常常见。匿名内部类...
在Java编程语言中,匿名内部类是一种特殊的类,它没有名称,通常用于简洁地实现某个接口或继承某个类,尤其在只需要单个实例且无需多次复用的情况下。这种设计模式可以大大简化代码,提高可读性。下面我们将深入探讨...
同样,匿名内部类也可以用来继承一个非抽象类,并且可以重写其方法。这在需要扩展已有类功能的场合非常有用。比如: ```java abstract class BaseClass { abstract void print(); } public class Main { ...
- 匿名内部类:没有名称的内部类,通常用于快速实现简单的接口或抽象类。 - 静态内部类:可以独立于外部类的实例存在,但仍然保持对外部类的访问权限。 例如,一个包含成员内部类的例子: ```java class ...
在上面的例子中,我们使用匿名内部类来继承抽象类Human,并覆盖了其中的walk()方法。 匿名内部类也可以用来实现接口,例如: ```java public interface Runnable { void run(); } public class AnonymousTest { ...
匿名内部类通常用于快速实现一个接口或继承一个类,不需要显式命名。静态内部类虽然在形式上类似于成员内部类,但可以独立于外部类实例存在,因为它们有自己的生命周期。 内部类的一个关键特性是它可以访问外部类的...
匿名内部类也可以继承自具体的类,如`TextWriter`: ```java public class TextWriter implements IWriter { @Override public void write() { System.out.print("text writer.."); } } public static ...
匿名内部类是通过继承现有类或实现现有接口来创建的,但不显式定义类名。 ##### 3.2.4 静态内部类 静态内部类类似于成员内部类,但是它是静态的,因此不需要依赖于外部类的实例就可以访问静态内部类的对象。 总结...
匿名内部类是另一种特殊的内部类,它没有名称,通常用于快速实现接口或抽象类的简短回调。在Java中,当只需要用一次的类实现某个接口或者继承某个类时,可以使用匿名内部类。例如: ```java Runnable r = new ...
2. **多态与抽象**:每个内部类都可以独立地继承一个类或实现一个接口,这意味着即使外部类已经继承了某个类或实现了某个接口,内部类仍然可以有自己的继承链,提供多重继承的解决方案。 3. **代码简洁性**:使用...
内部类的主要用途在于提供封装和抽象的能力,它可以访问外部类的所有成员,包括私有成员,这使得内部类成为实现复杂逻辑和封装特定行为的理想工具。此外,内部类也可以帮助我们更好地组织代码,尤其是在实现回调和...
现在,让我们来看看匿名类继承抽象类的例子: ```kotlin abstract class AbstractOnBind { abstract fun onBindChildViewData(holder: String, itemData: Any, position: Int) } lesson.does(object : ...
而如果父类是具体类或抽象类,那么我们只能通过内部类来实现多重继承的效果。以下是一个例子,展示了如何通过内部类实现对多个父类特性的继承: ```java class Father { public int strong() { return 9; } } ...
但是一般只用于实现接口或继承抽象类。 #### 三、匿名类的使用场景 匿名类主要用于以下几种情况: 1. **回调机制**:在事件监听器等回调机制中,使用匿名类可以简化代码,使得回调函数更加简洁明了。 2. **单次...
5. 内部类与匿名类:内部类可以是成员内部类、局部内部类或匿名内部类,它们提供了一种将相关类封装在一起的方式。例子可能会展示如何创建和使用这些内部类。 6. 异常处理:Java的异常处理机制是通过`try-catch-...