Java中的繼承性特性

  繼承性是java中的第二特性之一。而繼承性最為關鍵的地方為:代碼重用性的問題,利用繼承性可以從已有的類中繼續派生出新的子類,也可以利用子類擴展出更多的操作功能。

  繼承性的實現代碼為:class 子類 ?extends ?父類{ }

  有以下3點說明:

  1、對于extends而言,需要不斷的開展開來,但是為了理解上的方便,這些統一稱之為:繼承;

  2、子類又稱之為派生類;

  3、父類又稱之為超類(Super class);

以下代碼為子類繼承父類的屬性及方法

class Person{
  private String name;
  private int age;

  public Person() {}
  public Person(String name,int age){
    this.name = name;
    this.age = age;
  }

  public void setName(String name){
    this.name = name;
  }
  public void setAge(int age){
    this.age = age;
  }

  public String getName(){
    return this.name;
  }
  public int getAge(){
    return this.age;
  }
  }
}
  class Student extends Person {
   private String school;
   public void setSchool(String school){
    this.school = school;
  }
  public String getSchool(){
    return this.school;
  }
}

  public class School{
  public static void main(String args[]){
    Student stu = new Student();
    stu.setName("zhangsan");
    stu.setAge(123);
    stu.setSchool("大學");
    System.out.println("名字" + stu.getName() + ",年齡" + stu.getAge()+ stu.getSchool());
  }
}

從這中間可以得到以個結論:

  子類在實際中的運用中,是將父類定義得更加具體化的一種手段。

?

在繼承的使用中,有三大限制,這些在實際的運用及編寫代碼的時候需要多加注意:

一、繼承不可以多重繼承,但是可以多層繼承。

子類與父類的使用如下:

class A{
  public void fun(){
    System.out.println("這就是A");
  }
}
class B extends A{
  public void fun(){
    System.out.println("這就是B");
  }
}
class C extends A{
  public void fun(){
    System.out.println("這就是C");
  }
}
class New1{
  public static void main(String args[]){
    B b1 = new B();
    b1.fun();
    C c1 = new C();
    c1.fun();
  }
}

二、在子類在繼承父類時,嚴格來說會繼承中,但是在父類多有的私有操作屬于中稱之為隱形繼承。所有的非私有操作屬于顯示屬性。

class A {

???????? private String msg;

???????? public void setMsg(String msg) {

???????? ??? this.msg = msg;

???????? }

???????? public String getMsg() {

???????? ??? return this.msg;

???????? }

}

class B extends A {??????????????????????????????????????????????????????????????? // 繼承自A類

}

public class Demo {

public static void main(String args[]) {

???????? ??? B b = new B();

???????? ??? b.setMsg("Hello");???????????????????????????????????????? // 設置msg屬性,屬性通過A類繼承

???????? ??? System.out.println(b.getMsg());?? // 通過子類對象取得msg屬性

  }

}

三、在子類構造前一定會默認調用父類的構造(默認使用無參構造),以保證父類的對象先實例化,子類對象后實例化。

觀察實例化對象操作:
class A {
  public A() { // 父類提供的無參構造方法
    System.out.println("A、A類的構造方法!");
  }
}
class B extends A { // B是子類繼承父類A
  public B() { // 定義子類的構造方法
    System.out.println("B、B類的構造方法!");
  }
}
public class Demo {
  public static void main(String args[]) {
    new B(); // 實例化子類對象
  }
}

子類隱含語句:
class B extends A { // B是子類繼承父類A
  public B() { // 定義子類的構造方法
  super() ; // 父類中有無參構造時加與不加無區別,如果編寫則必須出現在首行
  System.out.println("B、B類的構造方法!");
}

父類不提供無參構造方法:
class A {
  public A(String title) { // 父類提供的有參構造方法
    System.out.println("A、A類的構造方法,title = " + title);
  }
}
class B extends A { // 定義子類B
  public B(String title) { // 子類提供有參構造
    super(title); // 明確調用父類構造,否則將出現編譯錯誤
    System.out.println("B、B類的構造方法!");
  }
}
public class Demo {
  public static void main(String args[]) {
    new B("Hello"); // 實例化子類對象
  }
}

?

方法覆寫:

特產主要特征:子類可以根據父類已有的功能進行功能的擴展,但是在子類定義屬性或方法時,可以出現定義的屬性或方法與父類同名的情況,這樣的操作成為覆寫。

class A {

???????? public void fun() {????????? // 在父類中定義的方法

?????????????????? System.out.println("A類中的fun()方法。") ;

???????? }

}

class B extends A {?????????????????????????? // 定義子類,此時沒有覆寫任何方法

???????? public void fun() {????????? // 此處為覆寫

?????????????????? System.out.println("B類中的fun()方法。") ;

???????? }

}

class C extends A {

???????? public void fun() {????????? // 此處為覆寫

?????????????????? System.out.println("C類中的fun()方法。") ;

???????? }

}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? B b = new B() ;????????????? // 實例化子類對象

?????????????????? b.fun() ;???????????????????????? // 調用fun()方法,此時方法被覆寫,所以調用被覆寫過的方法

?????????????????? C c = new C() ;????????????? // 實例化子類對象

?????????????????? c.fun() ;????????????????????????? // 調用fun()方法,此時方法被覆寫所以調用被覆寫過的方法

???????? }

}

?

?

方法重載與重寫的區別

區別?    重載        ? 覆寫

英文單詞  Overloading ? ??    Override

發生    發生在一個類里面   發生在繼承關系中

定義    方法名稱相同、參數  方法名稱相同、參數類型、個數相同、方法返回值相同

?      ?的類型及個數不同

極限    沒有權限的限制    被覆寫的方法不能擁有比父類更為嚴格的訪問控制限制

?

區別    this                      ? super

功能    調用本類構造,本類方法,本類屬性        子類調用父類構造,父類方法,父類屬性

形式    先查找本類中是否存在有指定的調用結構,     不查找子類,直接調用父類操作

特殊    表示本類的當前對象               空

?

轉載于:https://www.cnblogs.com/Zhuoshengda/p/7255805.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455575.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

10大html5前端框架

Bootstrap 首先說 Bootstrap,估計你也猜到會先說或者一定會有這個( 呵呵了 ),這是說明它的強大之處,擁有框架一壁江山的勢氣。自己剛入道的時候本著代碼任何一個字母都得自己敲出來擋我者廢的決心,來讓自己成長。結果受到周圍各 種…

多媒體技術復習匯總 收藏

多媒體技術復習匯總 收藏 1. 什么是媒體:媒體是信息表示和傳輸的載體。2. 媒體分類:感覺媒體,表示媒體,表現媒體,存儲媒體,傳輸媒體3. 多媒體技術的定義和特點:多媒體技…

PHP中的語法特點小結

PHP中的語法特點小結 1.PHP的變量開頭要加上$符號,見到$就知道這個是一個變量 2.PHP中的常量才是不用加$符號的 3.PHP中$可以用來嵌套使用,從而實現動態的變量名的層級調用 4.PHP程序<?php開頭,結尾可以加上?>,也可以不加 5.PHP中的常量有著魔術常量(系統自帶的) 6.PH…

滾動行為

new router({ scrollBehavior (to, from, savaPosition) { if(savePosition) { //歷史記錄的前進后退記住的之前滾動到的位置 return savePosition } else { return {x: 0, y: 0} } //history模式下 定位到某個元素失效的解決辦法 if(to.hash) { return { selector: to.h…

使用FFMPEG SDK解碼流數據獲得YUV數據及其大小

本文以H264視頻流為例&#xff0c;講解解碼流數據的步驟。 為突出重點&#xff0c;本文只專注于討論解碼視頻流數據&#xff0c;不涉及其它&#xff08;如開發環境的配置等&#xff09;。如果您需要這方面的信息&#xff0c;請和我聯系。 準備變量 定義AVCodecContext。如果您…

關于Python3.7和Python3.6中元組類型數據內存存儲問題

關于Python3.7和Python3.6中元組類型數據內存存儲問題 小編最近發現了一個瑕疵 當定義一個元組類型的變量后,若在程序后面再定義一個元組變量,這兩個元組的內容相同,那么在不同的版本中會出現不同的結果 在Python3.6版本中,解釋器將在內存中開辟兩個內存空間分別存儲兩個元組的…

shell 刪除了hdfs 文件_從零開始學大數據(三) Shell操作HDFS文件系統-中

1、格式化[rootmaster sbin]# hdfs namenode -format2、命令hdfs dfsadmin查看(hdfs dfsadmin -report)[rootmaster ~]# hdfs dfsadmin -report安全模式#獲取安全模式狀態[rootmaster ~]# hdfs dfsadmin -safemode get#進入安全狀態[rootmaster ~]# hdfs dfsadmin -safemode en…

計算機硬件

計算機硬件 一、為什么要學習計算機基礎 程序員編程的本質就是讓計算機去工作&#xff0c;而編程語言就是程序員與計算機溝通的介質。程序員要想讓計算機工作&#xff0c;就要知道計算機能干什么、是怎么樣的一個完成過程&#xff0c;這也是我們必須學習計算機基礎的原因。 …

當編程作為一種愛好

一、當編程作為一種愛好&#xff0c;時刻關心一段代碼如何實現。 二、當把工具操作得足夠熟悉&#xff0c;閉眼即能達到代碼述寫的規范。 三、程序呀&#xff0c;如果愛上你是我的錯&#xff0c;我打算一錯到底。轉載于:https://www.cnblogs.com/spiriter88/p/6913539.html

Python中的函數概述

1.python中函數概述 概念 模塊化編程的思想 有組織,可共享(重復使用,實現特定的功能的代碼塊) 提高程序的可維護性,提高開發效率,提高代碼的重用性定義一個函數 1.語法:def 函數名稱(形參列表):函數體/代碼塊return 返回值 2.定義參數介紹 def :關鍵字 用于函數的定義,函數的…

鐵路售票系統_鐵路資訊:復興號動車、智能京張高鐵…中國最高端鐵路裝備看這里...

今天上午&#xff0c;兩年一度的中國國際現代化鐵路技術裝備展在京開展&#xff0c;會期3天&#xff0c;將集中展示路網建設、客貨運輸、經營管理、工程建造、技術裝備、旅客服務等鐵路行業各領域的先進產品及技術。展會現場智能京張&#xff1a;將首次實現時速350公里自動駕駛…

H.264的NALU,RTP封包說明(轉自牛人)

H.264 RTP payload 格式 H.264 視頻 RTP 負載格式 1. 網絡抽象層單元類型 (NALU) NALU 頭由一個字節組成, 它的語法如下: --------------- |0|1|2|3|4|5|6|7| -------- |F|NRI| Type | --------------- F: 1 個比特.forbidden_zero_bit. 在 H.264 規…

CentOS下安裝MySQL報安裝文件conflicts錯誤:

2019獨角獸企業重金招聘Python工程師標準>>> 第一&#xff1a;報這個錯誤&#xff0c;說明已經安裝或相關文件已經存在&#xff0c;把已經存在的文件卸載了就可以了&#xff1a; rpm -e --nodeps mysql-libs-5.1.* 轉載于:https://my.oschina.net/u/3197158/blog/1…

inc指令是什么意思_西門子PLC一些指令

指令(英文全稱意思)∶指令含義1、LD ( Load裝載):動合觸點2、LDN (Load Not不裝載):動斷觸點3、A(And與動合):用于動合觸點串聯4、AN (And Not與動斷):用于動斷觸點串聯5、o(Or 或動合):用于動合觸點并聯6、ON(Or Not 或動斷):用于動斷觸點并聯7、(Out輸出):用于線圈輸出8、OLD…

python核心,內建函數,高階函數

晨測 global和nonlocal區別 寫一個遞歸的階乘回顧 1.global和nonlocal 關鍵字 2.函數的遞歸 1.查找規律 2.設置退出條件 3.性能 3.閉包 外函數中定義一個內函數 外函數的返回值是內函數的引用 內函數引用外函數的變量,未來外函數執行完畢,不會釋放被內函數引用變量 4.總結 1.…

對h.264壓縮視頻碼流中i幀的提取(firstime)

這個問題要說清楚還是有點復雜&#xff1a;首先判斷 NALU 類型是否是 5&#xff0c;如果是&#xff0c;那么以后連續出現的 NALU 類型為 5 的 NALU 就屬于 IDR 幀&#xff08;一種特殊的 I 幀&#xff09;&#xff1b;如果 NALU 不是 5&#xff0c;則要進一步判斷 slice_type 是…

hadoop fs 運維常用的幾個命令

FS Shell調用文件系統(FS)Shell命令應使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路徑作為參數。URI格式是scheme://authority/path。對HDFS文件系統&#xff0c;scheme是hdfs&#xff0c;對本地文件系統&#xff0c;scheme是file。其中scheme和auth…

touchesEnded不響應

為什么80%的碼農都做不了架構師&#xff1f;>>> http://blog.csdn.net/assholeu/article/details/16363241 touchesEnded不響應主要存在以下幾種情況 case 1 : userInteractionEnabled 部分控件如UIImageView&#xff0c;userInteractionEnabled默認為NO&#xff0…

python request對四類參數的處理_如何處理Djang中同一參數具有多個變量的request.GET...

在Django視圖中&#xff0c;您可以訪問request.GET[variablename]&#xff0c;因此在您的視圖中&#xff0c;您可以執行如下操作&#xff1a;myvar request.GET[myvar] 實際的request.GET[myvar]對象類型是&#xff1a; 現在&#xff0c;如果要傳遞具有相同參數名的多個變量&a…

nonlocal和global關鍵字

回顧: 1. Python的函數的概述函數定義函數調用2. Python函數中參數的類型和返回值形參和實參形參類型:普通參數: 實參的傳遞的順序和個數和形參一直關鍵字參數: 指定傳遞的實參被特定形參接收默認參數: 形參中設定當前參數的默認值可以不傳遞設定了默認參數的實參不定長參數:一…