(二)繼承

1.繼承寫(xiě)法

公共繼承(父類(lèi))

package basicForMando;
public class Animal {
    private String name;
      private int id;
      //構(gòu)造函數(shù)    如果未定義
      public Animal(String myName,int myid){
          name = myName;
          id = myid;
      }
      public void eat(){
       System.out.println(name+"正在吃");
      }
      public void sleep(){
          System.out.println(name+"正在睡");
      }
      public void introduction(){
          System.out.println("大家好!我是"+id+"號(hào)"+name+".");
      }

}


繼承公共函數(shù)(子類(lèi))

package basicForMando;
//1.extends 父類(lèi)
public class Penguin extends Animal {
//2.子類(lèi)構(gòu)造函數(shù)與父類(lèi)構(gòu)造函數(shù)參數(shù)應(yīng)該相同,如果父類(lèi)為隱式構(gòu)造函數(shù),子類(lèi)可不定義
      public Penguin(String myName, int myid) {
          super(myName, myid);      
   }    
}

2.super&this

1.我們可以通過(guò)super關(guān)鍵字來(lái)實(shí)現(xiàn)對(duì)父類(lèi)成員的訪問(wèn),用來(lái)引用當(dāng)前對(duì)象的父類(lèi)。

2.super用法

  * 方法super.a();
  * 在子類(lèi)構(gòu)造函數(shù)寫(xiě)構(gòu)造函數(shù)super();
  * 變量super.b
package basicForMando;
/*
 * 父類(lèi) 
 * 成員變量 count
 * 構(gòu)造函數(shù) 有參 無(wú)參
 *  普通函數(shù)    value()
 *  */
class Fu{
    String str="父類(lèi)默認(rèn)";
    int number  = 3;
    //父類(lèi)構(gòu)造函數(shù)
    Fu() {
        // TODO Auto-generated constructor stub
        System.out.println("fu constructor run ..無(wú)參父類(lèi).."   );
    }
    public void value() {
        // TODO Auto-generated method stub
        str ="父類(lèi)value方法內(nèi)";
    }
    Fu(int x){
        
        System.out.println("fu 構(gòu)造函數(shù) ..int.." + x  );
    }
    
}
class Zi extends Fu{
    //子類(lèi)構(gòu)造函數(shù)    寫(xiě)super 
    Zi(){
        
        System.out.println("zi  構(gòu)造函數(shù)    ..無(wú)參.."+super.number  );
    };
    Zi(int x){
        super(x+1);
        System.out.println("zi 構(gòu)造函數(shù) ..int.." + x);
    };
     public void value() {
         str ="子類(lèi)方法內(nèi)";  
         System.out.println("str子="+str);
         super.value();      //調(diào)用父類(lèi)的方法
          System.out.println("str="+str);   //這塊str 為什么是父類(lèi)的呀 
          System.out.println("父類(lèi)str="+super.str);
          
     }
    
}
//繼承
public class ExtendsDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Zi z= new Zi();
        //      Zi  z= new Zi(1);
        z.value();
        
    }

}

print(輸出)

fu constructor run ..無(wú)參父類(lèi)..
zi 構(gòu)造函數(shù) ..無(wú)參..3
str子=子類(lèi)方法內(nèi)
str=父類(lèi)value方法內(nèi)
父類(lèi)str=父類(lèi)value方法內(nèi)

3.this關(guān)鍵字:指向自己的引用。

3.implements (多繼承的特性)

使用 implements 關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類(lèi)繼承接口的情況,可以同時(shí)繼承多個(gè)接口(接口跟接口之間采用逗號(hào)分隔)。

public interface A { 
  public void eat(); 
  public void sleep(); 
} 
public interface B { 
  public void show(); 
} 
public class C implements A,B { }

4.final 修飾

final 關(guān)鍵字聲明類(lèi)可以把類(lèi)定義為不能繼承的,即最終類(lèi);或者用于修飾方法,該方法不能被子類(lèi)重寫(xiě):

//聲明類(lèi)
final class 類(lèi)名 {//類(lèi)體}
//聲明方法
修飾符(public/private/default/protected) final 返回值類(lèi)型 方法名(){
//方法體
}

:實(shí)例變量也可以被定義為 final,被定義為 final 的變量不能被修改。被聲明為 final 類(lèi)的方法自動(dòng)地聲明為 final,但是實(shí)例變量并不是 final

5.重載和重寫(xiě)

class Animal{ 
  public void move(){ 
  System.out.println("動(dòng)物可以移動(dòng)"); 
  } 
} 
class Dog extends Animal{ 
  public void move(){ 
    System.out.println("狗可以跑和走");
  } 
} 
public class TestDog{ 
  public static void main(String args[]){ 
    Animal a = new Animal(); // Animal 對(duì)象 
    Animal b = new Dog(); // Dog 對(duì)象 
    a.move();// 執(zhí)行 Animal 類(lèi)的方法 
    b.move();//執(zhí)行 Dog 類(lèi)的方法 
  } 
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 接上文《JavaSE 基礎(chǔ)學(xué)習(xí)之二 —— Java 的部分基本語(yǔ)法》 三. Java 的繼承與接口 1. java...
    琦小蝦閱讀 819評(píng)論 0 3
  • Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和...
    Java小辰閱讀 1,360評(píng)論 1 1
  • 繼承的概念 繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因?yàn)樗试S創(chuàng)建分等級(jí)層次的類(lèi)。 繼承就是子類(lèi)繼承父類(lèi)的特征和...
    耳東陳_f1e5閱讀 1,043評(píng)論 0 4
  • 一、繼承 1. 概述 繼承是面向?qū)ο蟮闹匾卣髦?,?dāng)多個(gè)類(lèi)中存在相同的屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類(lèi)中...
    陳凱冰閱讀 413評(píng)論 0 2
  • 一、繼承 概述繼承是面向?qū)ο蟮闹匾卣髦?,?dāng)多個(gè)類(lèi)中存在相同的屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類(lèi)中,那多個(gè)...
    java部落閱讀 1,043評(píng)論 0 0

友情鏈接更多精彩內(nèi)容