4 回答

TA貢獻1878條經驗 獲得超4個贊
關鍵字super可用于:
聲明泛型類型:
public class Foo<E super Bar> { // <=====
...
}
從子類構造函數調用基類構造函數:
public class Bar {
private int id;
public Bar(int id) {
this.id = id;
}
}
public class Foo extends Bar {
public Foo(int id) {
super(id); // <=====
}
}
當子類隱藏字段時,訪問基類中的字段:
public class Foo extends Bar {
private int id;
public int getFooId() {
return this.id;
}
public int getBarId() {
return super.id; // <=====
}
}
從重寫的子類方法調用基類方法:
public class Bar {
public void doGreatWork() {
...
}
}
public class Foo extends Bar {
@Override
public void doGreatWork() {
...
super.doGreatWork(); // <=====
...
}
}
當子類重寫方法時引用基類方法
public class MultiBar extends Bar {
public void doGreatWork() {
list.stream().forEach(super::doGreatWork); // <=====
}
}

TA貢獻1880條經驗 獲得超4個贊
靜態變量/方法使用什么內存?
如果我們想訪問或調用該方法,我們不需要創建對象,只需在編寫方法時使用 static 關鍵字,如 ->> public static show()。
當我們使用 static 關鍵字時,該類將被調用并執行該方法。static 意味著我們不能改變值,我們也可以對變量使用 static 關鍵字,一旦我們使用 static 關鍵字就意味著我們不能經常改變值。例子:
public class static example
{
public static void main(String[] args)
{
xyz.i = 10;
xyz.show();
}
}
class xyz
{
static int i;
public static void show()
{
System.out.println("Stackoverflow example by Me");
}
}

TA貢獻1848條經驗 獲得超2個贊
關鍵字“Super”是否僅在 Method overriding 的情況下才有意義?
當我們要調用父類的方法時,子類的方法將在方法重載中執行,因為父類和子類將具有相同的方法名。這就是方法重載發生的原因。為了克服這個問題,我們使用 super 關鍵字來調用父類方法,即使父類和子類同名。我們可以輕松調用并執行父類方法
例子:
class A {
int i;
public void show(){
System.out.println("A");
}
}
class B extends A {
int i;
public void show(){
super.show()
System.out.println("B");
}
}
public class overriding example {
public static void main(String[]args) {
B obj1 = new B();
obj1.show();
}
}

TA貢獻1840條經驗 獲得超5個贊
當父類和子類都有同名成員時訪問父類的數據成員,顯式調用父類的無參數參數化構造函數,當子類重寫該方法時訪問父類的方法。它可用于訪問父類的變量,調用父類的構造函數,并可用于方法覆蓋的情況。
添加回答
舉報