参考资料:
题库:
java方法
第13题
注意,可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。
继承与重载
第12题
Beta 繼承 Alpha, 選項中全部都是 bar(), 所以這題是在玩 override 及 overload
private void bar (int x){}, 從傳入參數看到準備要 override, 但是其存取修飾字小於原本父類別的 public, 所以不可以.
public void bar (int x){}, 這個就沒有問題了.
public int bar( String x){ return 1;}, 這個在玩 overloading, 傳入參數型態不同, 而且有正確的 return.
public Alpha bar( int x){}; 這個未處理 return 回 Alpha, 且參數是 int x, 應該是玩 override, 但是其傳回型態也不可以是 Alpha. 應該小於或等於原類別.
public void bar( int x, int y){}; OK, 因為傳入參數個數不同, 玩 overloading
public int bar(int x){ return x;}, 錯誤就是出在傳回值型態.
第14题
每个构造函数必须调用重载构造this或超类构造方法super作为其第一条语句
一、子类的构造方法没有显式呼叫父类的构造方法,因此子类的构造方法将用super();呼叫父类的无参构造方法
二、子类没有定义构造方法,则默认调用父类的无参构造方法
三、方法可以重载,但子类不能重载父类的构造方法,只能用super呼叫
父类构造了一个有参构造方法,因此没有默认的无参构造方法,所以编译错
所以如果一个类要扩展,最好提供一个无参构造方法以避免编程错误
第20题
Looser coupling(更松耦合)+Higher cohesion(更高内聚)是面向对象设计思想的重要特点
第23题
Low cohesion + Tight coupling则是不符合面向对象设计的做法,造成程序可修改性差,效率低
第26题
extends是strong is-a,implements是weak is-a,关系都是继承
aggregation和composition是has-a,关系是聚集和组合,通常表示为类中的一个数据域
第27题
子类不能降低父类中所定义方法的可访问性,所以不能使用private
覆盖方法的返回值必须与父类中原方法一样
重载方法则是一个类中提供多于一个方法,方法名相同,参数列表不同。如果方法名和参数列表都相同,即便是回传类型不同,也被视为同一个方法。
第28题
this可以用来呼叫同一个类中的另一个构造函数
super用来呼叫父类的构造函数
都可以带参或者不带参
第35题
呼叫同一个类中的构造方法要用this,而不能直接用方法名。否则编译失败
第39题
final类型只能直接初始化或在方法里第一次初始化,以后不能更改
第42题
优先选择参数个数确定的构造方法
第43题
子类当中没有构造方法的,直接调用父类的无参构造方法,但是如果父类没有无参构造方法,(比如显式定义了一个有参构造方法的情况下,就没有无参构造方法),编译就会出错