學(xué)習(xí)啦>生活課堂>生活小常識>

繼承跟多態(tài)的區(qū)別

時(shí)間: 岳彬1043 分享

  在計(jì)算機(jī)語言中有一種是JAVA的語言,里面有一些方法,繼承,重載,重寫。下面是學(xué)習(xí)啦小編為你整理的繼承跟多態(tài)的區(qū)別,供大家閱覽!

  重載,繼承,重寫和多態(tài)的區(qū)別:

  繼承是子類獲得父類的成員,重寫是繼承后重新實(shí)現(xiàn)父類的方法。

  重載是在一個(gè)類里一系列參數(shù)不同名字相同的方法。

  多態(tài)則是為了避免在父類里大量重載引起代碼臃腫且難于維護(hù)。

  網(wǎng)上看到一個(gè)有趣的說法是:繼承是子類使用父類的方法,而多態(tài)則是父類使用子類的方法。

  下面的例子包含了這四種實(shí)現(xiàn):

  class Triangle extends Shape {

  public int getSides() { //重寫

  return 3;

  }

  }

  class Rectangle extends Shape {

  public int getSides(int i) { //重載

  return i;

  }

  }

  public class Shape {

  public boolean isSharp(){

  return true;

  }

  public int getSides(){

  return 0 ;

  }

  public int getSides(Triangle tri){

  return 3 ;

  }

  public int getSides(Rectangle rec){

  return 4 ;

  }

  public static void main(String[] args) {

  Triangle tri = new Triangle(); //繼承

  System.out.println("Triangle is a type of sharp? " + tri.isSharp());

  Shape shape = new Triangle(); //多態(tài)

  System.out.println("My shape has " + shape.getSides() + " sides.");

  }

  }

  注意Triangle類的方法是重寫,而Rectangle類的方法是重載。

  比較就可以發(fā)現(xiàn)多態(tài)對重載的優(yōu)點(diǎn):如果用重載,

  則在父類里要對應(yīng)每一個(gè)子類都重載一個(gè)取得邊數(shù)的方法;如果用多態(tài),

  則父類只提供取得邊數(shù)的接口,至于取得哪個(gè)形狀的邊數(shù),怎樣取得,

  在子類里各自實(shí)現(xiàn)(重寫)。

3049723