开始学习了,今天看了视频:https://www.bilibili.com/video/BV1p4411P7V3
有一下几个问题,一下答案来自百度或者其他博客:
1、重写与重载的区别(主要是模糊了):
面试时,问:重载(Overload)和重写(Override)的区别?(参考:https://www.cnblogs.com/wei-hang/p/12921196.html)
答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。
2、函数式接口
之前就学习过,但是忘了,看了这个博客:https://www.cnblogs.com/jianwei-dai/p/5819479.html 发现只是捡回来一点点 还是有很多不会。
3、内部类,匿名内部类
参考:https://www.cnblogs.com/libinhong/p/10990602.html
4、静态代码块 静态变量 等执行顺序
这个在学习Java初就练习过,以背过,只是现在忘记了,参考:https://www.cnblogs.com/leiqiannian/p/7922824.html
如果类还没有被加载:
1、先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关。
2、执行子类的静态代码块和静态变量初始化。
3、执行父类的实例变量初始化
4、执行父类的构造函数
5、执行子类的实例变量初始化
6、执行子类的构造函数
如果类已经被加载:
则静态代码块和静态变量就不用重复执行,再创建类对象时,只执行与实例相关的变量初始化和构造方法。
5、反射暴力破解单例
新知识,以及更深入了。
参考:https://www.cnblogs.com/blogofcookie/p/5793886.html
建议再次看下这个视频:https://www.bilibili.com/video/BV1K54y197iS
对单例,以及破解,以及为什么枚举不能反射,更有意思。