• 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接口中只有两个方法。

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

    下图就是错误的。

  • 相关阅读:
    ceph 集群 slow requests are blocked
    k8s集成cephfs(StorageClass方式)
    ceph错误application not enabled on 1 pool(s)解决方法
    安装 harbor v2.3.4
    openstack高可用集群搭建(分布式路由)(train版)
    github项目收集
    devops组件搭配选型
    JS中的getter和setter
    [论文理解] Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
    Pytorch 训练停止,输出显示 died with <Signals,SIGKILL.9> 问题定位过程记录
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7841327.html
Copyright © 2020-2023  润新知