接口抽象内部类
相关截图:
问题描述:
这个抽象内部类实例化一点没懂,问题如下
1. 按照方法一来说,抽象类不能实例化为什么可以用抽象类对象指向抽象类实例化后的空间
2. 基于问题1,为什么这个对象还可以调用这样不是相当于把抽象类实例化成功了并且产生了对象并且这个对象还可以调用方法
3. 第二张方法new 父类.new 子类什么意思一点没有理解
4.另外接口有普通成员内部类为什么可以直接导入这个内部类,绕过实现它的类直接new一个这个接口里面成员内部类
21
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小蓝
2022-01-29 18:31:24
同学你好,老师这里针对同学的问题一一解答:
1.这里使用的是匿名内部类的形式创建对象,虽然后面new语句写的是抽象类的名字,实际上这里创建的是该抽象类的子类对象。这也是匿名内部类的特点。
2.基于上一点,由于这里实例化的是子类对象,所以这里的方法调用其实是多态的写法。
3.这里连续两个new是语法的简写。成员内部类的创建方式是基于外部类对象的,所以需要先创建外部类的对象,通过这个对象来创建内部类对象。这一点是Java的语法。所以这里分开写的话应当如下:
//创建外部类对象 IOuterInterface ioi = new AbClassDemo(); //基于外部类对象创建内部类对象 IOuterInterface.AbInnerClass abInnerOne = ioi.new AbDemo();
4.这里可以参考一般成员变量的使用方式,即通过继承关系可以访问父类成员。同理,也可以直接访问父类/父接口的成员内部类。不同的是,成员变量是具体的值或者对象,而内部类是一个类,必须进行实例化。所以这里是继承思想的拓展使用方式。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星