zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第十章-匿名内部类-细节

    一.

    谈论一个细节,

    程序中有外部类和内部类,主函数和一般函数中都有一个新建内部类的对象。在编译运行的时候,出现了错误,如下所示。

    为什么会有这样的错误出现?截图中说是69行出错了,我们现在将其注释掉,编译没有问题,为什么会这样?

    为什么同样是new对象,主函数中的就不行呢?主函数是静态的,内部类是成员,是非静态的,主函数不能直接访问非静态的成员。如果非要访问,那就用static修饰。或者写成this.new Inner(); 外部类对象.new Inner(); 可是this没有,因为在静态中不允许有this。

    为什么一般函数就可以创建内部类对象呢?因为里面持有this,(对于this理解还是不够深刻),

    二.

    截图中是创建了object类子类的对象,或者说内部类的对象。说白了,就是下面这样的

    接下来完整地写出程序,编译没有问题。

    (这个匿名的object子类,继承了object类的什么内容呢?说着说object有什么呢?)

    如果内部类的方法不唯一,那就起名字

    但是在编译,运行的时候出现了错误。

    为什么这里不可以调用show()方法,因为父类或者接口object里面压根就没有show()方法,这个是内部类或者子类特有的方法。

    多态中编译看左边,show()看左边的obj,obj是所属的object类型的接口,有show()方法么,没有,直接编译失败。object接口中只有两个方法。

    为什么不做起名的这个动作就可以,而起名字的这种方式就不行?因为我在创建子类对象,调用子类对象就是没有问题。为什么起名字,建立引用就不行?因为子类对象向上转型了,一转型,就隐藏了它的子类型,并限定了特有方法使用。这就是多态,结合了匿名内部类了。

    下图就是错误的。

  • 相关阅读:
    AX2009使用NPOI导出EXCEL颜色设置
    AX2009使用NPOI导出EXCEL常用格式设置
    AX2009使用NPOI导出EXCEL2007
    AX2009使用NPOI导出EXCEL
    【基础复习】五:STL模板与容器
    【基础复习】四:循环、递归与概率
    【基础复习】三:指针与引用
    【基础复习】二:预处理、const与sizeof
    【基础复习】一:程序设计基本概念
    TEC-2 机 微程序设计
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7841327.html
Copyright © 2011-2022 走看看