1.接口和抽象类的区别:
都不能实例化; 实现接口的类和抽象类的子类都必须全部实现抽象方法才能实例化。
a.接口中只能有公开的抽象方法和static,final变量,没有构造方法,抽象类中可以有抽象方法也可以没有,有抽象方法的类,一定为抽象类,
抽象方法不能使用private关键字。
abstract class 表示的是is a关系,interface表示的是like a关系。
抽象类强调的是从属关系,接口强调的是功能。
借鉴:https://www.jianshu.com/p/c4f023d02f0c
2.构造方法不能重写但是可以重载,因为构造方法不能被继承。
如果在子类的构造方法中,没有使用关键字super调用父类的某个构造方法,那么默认有super();语句,即调用父类不带参数的构造方法。
3.当try中带有return时,会先执行return前的代码,然后暂时保存需要return的信息,再执行finally中的代码,最后再通过return返回之前保存的信息。
当finally通过地址改变了变量,还是会影响方法返回值的。
参考https://www.cnblogs.com/pcheng/p/10968841.html
当finally中有return的时候,try中的return会失效,在执行完finally的return之后,就不会再执行try中的return。这种写法,编译是可以编译通过的,但是编译器会给予警告,所以不推荐在finally中写return,这会破坏程序的完整性,而且一旦finally里出现异常,会导致catch中的异常被覆盖。
4.冒泡排序
网友评论