程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> class-關於java中的super()用法

class-關於java中的super()用法

編輯:編程綜合問答
關於java中的super()用法

class Insect {
private int size;
private String color;

public Insect(int size, String color) {
    this.size = size;
    this.color = color;
}

public int getSize() {
    return size;
}

public void setSize(int size) {
    this.size = size;
}

public String getColor() {
    return color;
}

public void setColor(String color) {
    this.color = color;
}

public void move() {
    System.out.println("Move");
}

public void attack() {
    move();  //假設昆蟲在攻擊前必須要先移動一次
    System.out.println("Attack");
}

}
/////子類
class Bee extends Insect {
public Bee(int size, String color) {
super(size, color);
}

public void move() {
    System.out.println("Fly");
}

public void attack() {
    move();
    super.attack();//調用了父類的attack,但是調用了子類的move()
}

}
public class InheritanceVSComposition {
public static void main(String[] args) {
Insect i = new Bee(1, "red");
i.attack();
}
}
輸出結果為:
Fly
Fly
Attack
第47行,super.attack();為什麼是調用了子類的move()而不是父類的?能解釋下原理嗎?

最佳回答:


子類覆寫父類的方法,因為調用是從子類發出的,因此在父類中還是調用的子類的move方法;
再說this問題,this也是一個對象,但是不要將this理解成Inspect對象,this還是指的是調用者Bee的對象,你可以在調用this.move()方法前,打印一下,比如
System.out.print(this);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved