1. java 子类中必须显式或者隐式的调用父类的构造方法,原因是双亲委派机制。java 在创建一个对象是,会在构造方法中依次向上调用父类的构造方法。
为了找到父类的构造方法,所以子类应显式或者隐式的调用父类的构造方法 .
显式: 构造方法的第一行super(n..) n 个参数
隐式: 子对象构造方法会默认调用父类的无参构造方法,即super(). 所以父类中如果没有无参构造,则子类必须显式的调用父类的有参构造方法。
2. java 参数传递的正常理解: java 包装对象参数是引用传递,那么方法中改变参数的属性值,即等同改变原参数。 但如果是方法中改变参数的引用地址后,
并不会对原参数造成影响。 原因是: 对象分为两部分,参数名和参数值地址。引用传递是指将参数值地址传递给方法参数。所以改变参数对象中的属性,等同
改变引用地址的对象属性。 如果改变参数的引用地址,就失去了对原参数值地址引用,这时再去改变属性,就不会影响原参数了。
3. lamda 表达式:
lamda 表达式只能用于函数式接口,即@FunctionInterface注解的接口。 该接口只能有一个抽象方法。所以不能是抽象类。
匿名内部类则没有必须是接口,必须只有一个抽象方法的要求,而且使用匿名内部类会在编译后产生$1.class 等文件。