当前位置:   article > 正文

java基础——匿名内部类_在java中, 创建的匿名内部类是inter接口的一个子类吗?

在java中, 创建的匿名内部类是inter接口的一个子类吗?

匿名内部类:

        内部类的简化写法

前提:

        存在一个接口或者类,这里的类可以是一个具体的类或者抽象类

格式:
        new 类名或者接口名{

                重写方法;

}

匿名内部类的本质:是一个继承了该类或者实现该接口的子类匿名对象

例:

  1. interface Inter{
  2. public abstract void show();
  3. public abstract void show2();
  4. }
  5. class Outer {
  6. public void method() {
  7. Inter i = new Inter(){
  8. public void show() {
  9. System.out.println("show");
  10. }
  11. public void show2() {
  12. System.out.println("show2");
  13. }
  14. };//!!!注意这里有个分号,因为这里定义一个对象了
  15. i.show();
  16. i.show2();
  17. }
  18. }
  19. public class test{
  20. public static void main(String[] args){
  21. Outer o = new Outer();
  22. o.method();
  23. }
  24. }

面试题:

  1. //按照要求,补齐代码
  2. //要求:输出“HelloWorld”
  3. interface Inter{void show();}
  4. class Outer {}
  5. public class test{
  6. public static void main(String[] args){
  7. Outer.method().show();
  8. }
  9. }

分析:

首先看main函数:Outer.method().show(),这是链式编程,那么从Outer.method()这里可以看出这里返回的是一个对象,且method()应该是Outer中的一个静态方法。又由于接口Inter中有show()方法,所以method()方法返回的类型是一个接口。

答案:

  1. interface Inter{
  2. void show();
  3. }
  4. class Outer {
  5. public static Inter method() {//static修饰,Inter接口定义
  6. return new Inter() {//注意返回的是一个接口,所以用return
  7. public void show() {//注意这里要有public修饰
  8. System.out.println("HelloWorld");
  9. }
  10. };
  11. }
  12. }
  13. public class test{
  14. public static void main(String[] args){
  15. Outer.method().show();
  16. }
  17. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/683233
推荐阅读
相关标签
  

闽ICP备14008679号