e^nx

导航

第二周疑问点

  • 实现类应该重写接口的所有方法嘛?

    一般来说是的。jdk8以前都是默认抽象方法,必须全部重写。

    jdk8后接口中的方法,可以有默认方法和静态方法,

    默认方法和抽象类的具体方法一样,是为了给子类一个默认初始化。可以继承和根据需求重写。

    静态方法

    不能被继承,只能被接口名调用。

    但是,在当前实际开发中,接口一般作为一种规范去交给子类实现。尽量不要写其他方法。

  • 为啥抽象类的子类在某个方法返回,要用抽象类的引用来接收?有啥好处?

    为了多态

  • 抽象类的设计作用,抽象方法,是否有引导子类,必须重写一些特定方法的作用,特别是具体子类?,具体方法给子类提供一个默认实现

    是的

  • 局部内部类为啥不可以有权限修饰符?

    看作一个局部变量,随着方法起始。不需要修饰符

  • 局部内部类怎么访问外围类中的局部变量?在jvm中如何访问?

    访问不受限制,但是访问的值默认加了final,因为局部内部类实例化的对象,可能比局部变量的生命周期长,且jvm在实例化局部内部类的时候,拷贝了所在方法体内的局部变量,但是为了避免,访问内部类对象修改拷贝的值后,局部变量没改变。所以直接final了。

  • 内部类具体分类,异同之处。

    笔记中有具体分析

  • 匿名内部类有啥用?

    便利了实现类调用接口的方法。表面上看,接口好像可以实例化了。 抽象类表面上好像也可以实例化了。

    不用创建新的类,甚至连对象都一步创建了。

    实现的接口,类,抽象类的子类。

  • 父类的父类可以接受子类的对象那,Person 可以接受 new Son() 嘛 (Son extend Father)?

    可以,Person相当于指向的是Son对象里面父类的父类的成员信息区。不能调用Father的成员变量,除非向下转型。

    还是那句话,对于访问成员变量:编译时看左边,运行时看左边。

    ​ 编译时看左边,运行时看右边。

  • 显式调用 是从方法区中的父类类加载中调用的???

    疑问来源:为什么父类引用子类对象,父类引用调用子类重写的方法,执行的确实是子类重写后的方法,但super调用父类被重写的方法,仍然调用的是父类的方法。疑问:重写不是覆盖了对象中的父类成员信息区嘛?

  • 实现类多继承接口,多个接口中有重复的方法会怎样?

    报错

  • 为什么成员位置创建的对象掉用不了方法,和成员变量。

    首先!不要在成员位置创建自己的对象。否则在别的地方再用这个类创建对象时,就会循环创建这个成员对象

    其次:创建其他类的对象,后调用该对象的成员变量也会报错,再就是这种实例化方法太单一。不建议

posted on 2021-01-17 18:02  e^nx  阅读(51)  评论(0编辑  收藏  举报