Java繼承概述以及Java繼承案例和繼承的好處

Java繼承概述

1.多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那么多個類無需再定義這些相同屬性和行為,只要繼承那個類即可。

2.在Java中通過extends關鍵字可以實現類與類的繼承。

  例如:class 子類名 extends 父類名 {}

3.單獨的這個類稱為父類,基類或者超類;這多個類可以稱為子類或者派生類。

4.有了繼承以后,我們定義一個類的時候,可以在一個已經存在的類的基礎上,還可以定義自己的新成員。

-----------------------------------------------------------------------------

首先我來寫兩個代碼:
//定義學生類
class Student {
  String name;
  int age;

  public Student() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃飯");
  }
}

//定義老師類
class Teacher {
  String name;
  int age;

  public Teacher() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃飯");
  }
}

我們觀察上面兩個代碼:
  發現name,age成員變量,以及getXxx()/setXxx(),還有eat()等都是相同的。
  如果我們后來繼續定義類,舉例:工人類,軍人類。他們是不是也具備這些內容呢?
  那么,我們每一次定義這樣的類的時候,都要把這些重復的內容都重新定義一遍。
  麻煩不?當然麻煩。所以,我們要考慮改進?
那么如何改進呢?
  我這想的:我能不能把這些相同的內容給定義到一個獨立的類中。
  然后,讓這多個類和這個獨立的類產生一個關系,有了這個關系后,
  這多個類就可以具備這個獨立的類的功能。
  為了實現這個效果,Java就提供了一個技術:繼承。

  父親:
    4個兒子

繼承怎么表示呢?繼承的格式是什么樣子的呢?
class Fu {}

class Zi extends Fu {

}

我們就回頭修改我們的代碼:
class Person {
  String name;
  int age;

  public Person() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃飯");
  }
}

class Student extends Person {
  public Student() {}
}

class Teacher extends Person {
  public Teacher() {}
}

-----------------------------------------------------------------------------

Java繼承案例和繼承的好處

 1 /*
 2     繼承概述:
 3         把多個類中相同的內容給提取出來定義到一個類中。
 4         
 5     如何實現繼承呢?    
 6         Java提供了關鍵字:extends
 7         
 8     格式:
 9         class 子類名 extends 父類名 {}
10         
11     好處:
12         A:提高了代碼的復用性。
13         B:提高了代碼的維護性。
14         C:讓類與類之間產生了關系,是多態的前提。
15     
16         類與類之間產生了關系,其實也是繼承的一個弊端:
17         類的耦合性增強了。
18         
19         開發的原則:低耦合,高內聚。
20         耦合:類與類之間的關系。
21         內聚:就是自己完成某件事情的能力。
22 */
23 
24 //使用繼承前
25 /*
26 class Student {
27     public void eat() {
28         System.out.println("吃飯");
29     }
30     
31     public void sleep() {
32         System.out.println("睡覺");
33     }
34 }
35 
36 class Teacher {
37     public void eat() {
38         System.out.println("吃飯");
39     }
40     
41     public void sleep() {
42         System.out.println("睡覺");
43     }
44 }
45 */
46 
47 //使用繼承后
48 class Person {
49     public void eat() {
50         System.out.println("吃飯");
51     }
52     
53     public void sleep() {
54         System.out.println("睡覺");
55     }
56 }
57 
58 class Student extends Person {}
59 
60 class Teacher extends Person {}
61 
62 class ExtendsDemo {
63     public static void main(String[] args) {
64         Student s = new Student();
65         s.eat();
66         s.sleep();
67         System.out.println("-------------");
68         
69         Teacher t = new Teacher();
70         t.eat();
71         t.sleep();
72     }
73 }
我的GitHub地址:https://github.com/heizemingjun
我的博客園地址:http://www.cnblogs.com/chenmingjun
我的螞蟻筆記博客地址:http://blog.leanote.com/chenmingjun
Copyright ?2018 黑澤明軍
【轉載文章務必保留出處和署名,謝謝!】

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

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

相關文章

描述用戶場景

每一個組員根據自己所承擔的項目,描繪用戶場景并將典型用戶和用戶場景描述! 典型用戶 ①當代大學生們,我們的收入多數是來自家庭父母給的生活費,或者還包括一些自己打工掙的零塊。收入也就這么幾個來源,但是支出卻多種…

【pyqt5學習】——控件綁定槽函數的同時利用lambda實現傳參

兩種方法: 1、利用pyqtsignal的emit進行傳參 2、connect函數進行傳參 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根據按鈕上的文字來進行閱讀def readZodiacByButtonText(self,text):if self.language &…

如何用MaskBlt實現兩個位圖的合并,從而實現背景透明

我有兩個位圖,一個前景圖,一個背景圖(mask用途)。請問如何用MaskBlt實現兩個位圖的合并,從而實現背景透明! 核心代碼:dcImage.SetBkColor(crColour);dcMask.BitBlt(0, 0, nWidth, nHeight, &…

史陶比爾與機器人之父

早在1982年,史陶比爾已經成立了工業機器人部門,經銷美國UNIMATION公司的PUMA機器人,1988年,史陶比爾成功收購了 UNIMATION。而UNIMATION是世界上最著名的機器人專家恩格爾伯格所創立的企業,PUMA正是世界上第一臺工業機…

git進階

Git 進階用法 Git 高階用法 1. 基本概念 你的本地倉庫由Git維護的三棵樹組成。第一個是你的工作目錄,它持有實際文件; 第二個是緩存區(index),它像個緩存區域,臨時保存您的改動;最后是HEAD,指向你最近 一次提交后的結果。 git add…

lab3

lamp: 在阿里云linux(Ubuntu)上安裝Apache mysql php : apt-get install mysql_server mysql_client php5 php_mysql apache2 系統會提示正確的包的名稱 安裝ECShop 在本地命令行 scp ecshop.zip rootxxx.xxx.xx.xxx:/var/www/ 把壓縮文件拷貝…

【python學習】——pyttsx3庫實現文本朗讀、音量、音速等調節

import pyttsx3# 初始化朗讀引擎 engine pyttsx3.init() # 設置朗讀速度 self.engine.setProperty(rate, 120) # text為需要讀取的內容 self.engine.say(text) # 不添加下面這句,沒有聲音 self.engine.runAndWait()pyttsx3其他應用: python pyttsx3實現…

mysql中如何判斷某個字段是純數字

SELECT * FROM m_customer WHERE LENGTH(0nickname) LENGTH(nickname); 原理是nickname字段如果某一位不是數字,那么跟0相加后只會保留不是數字的那一位之前的值, 比如SELECT 011a1bc FROM DUAL;結果是11,SELECT 0a1bc FROM DUAL;結果是0轉載于:https://www.cnblogs.com/wangx…

Variable Assembly Language可變匯編語言

Variable Assembly Language可變匯編語言 可變匯編語言(Variable Assembly Language, VAL)是一個設計給Unimation Inc.工業機器人用的電腦控制系統及編程語言。VAL機器人語言是會被永久地儲存于系統內,這包括了個體應用軟件的導向。VAL能從容…

在ABAP里實現條件斷點的三種方式

背景 有不同的同事問我這個問題:例如下圖的LOOP要執行1000次,我只對其中的某一次比如第501次循環感興趣,我肯定不可能按500次F5然后進入第501次的調試。或者我只對LOOP里某個變量為某一個具體值的那一次循環感興趣。如何才能避免重復按F5,讓斷…

【pyqt5學習】——添加菜單欄動作action,給動作觸發triggered綁定事件

1、打開qt-designer工具——視圖——勾選上動作編輯器 2、勾選后右下方會出現動作編輯器欄 3、在改面板可以進行已有動作的屬性編輯,也可以添加新的動作 4、 鼠標左鍵選中動作不松開,可以將動作拖到菜單欄 5、給動作綁定事件 self.saveLog.triggered.co…

什么情況下會調用到session_destroy()

https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一個函數 ... 這個函數在任何情況下都不會被 php 引擎自動調用 ... 只能你手工去調用 ... php 內部存在著清理 session 的機制 ... 但與這個函數完全無關 ... 如果你想問的是什么時候該手工調用這個…

對永磁無刷電機的調速過程

考慮了一下對永磁無刷電機的調速過程。 一般把使用永磁轉子、無電刷的電機,根據驅動方式分為永磁同步與直流無刷。其實沒有本質區別。在此稱為永磁無刷。 用永磁無刷電機的分子泵驅動器一向調速做得不太好。這兩年好一些了,但是還是不能完全滿意。李老…

C# / VB.NET合并PDF指定頁

在前面的文章中,我們已經知道如何合并、拆分多個PDF文件,在這篇文章中的合并、拆分PDF文檔主要是以方便文檔管理的目的來操作文檔,在文檔查閱、管理及存儲上很方便實用。但是我們如果想要合并多個文檔中的部分文檔頁的內容,該如何…

高級異常

一、什么是異常 解析:異常就是在程序的運行過程中所發生的不正常事件 二、Java異常處理是通過5個關鍵字來解決的:try、catch、finally、(前三個是捕獲異常)throw(手動拋出異常)、throws(聲明異常…

【糾錯】——錯誤:PermissionError: [WinError 32] 另一個程序正在使用此文件,進程無法訪問。“+解決方案

目錄 問題出現場景 原因 解決方案 問題出現場景 先打開pdf文件,獲取pdf文件內容后,利用os.remove()來刪除文件,這時候出現錯誤 os.remove(source_path)PermissionError: [WinError 32] 另一個程序正在使用此文件,進程無法訪問。…

Eclipse中自動添加注釋

方法一:Eclipse中設置在創建新類時自動生成注釋 windows-->preference   Java-->Code Style-->Code Templates     code-->new Java files 編輯它 ${filecomment} ${package_declaration} /** * Author fufu* Time ${date} ${time} * Version 1.…

使用rancher創建負載均衡服務

2019獨角獸企業重金招聘Python工程師標準>>> 2臺主機,一個server包含2個容器進程(可以是多個),一個負載均衡容器(貌似是依賴haproxy的) 1,創建一個鏡像,編輯Dockerfile 創…

Six Basic Functional Areas of Spring

轉載于:https://www.cnblogs.com/Brake/p/5440738.html

【pyqt5學習】——登錄界面跳轉到主界面,登錄界面關閉的情況下從主界面跳轉回登錄界面

目錄 一、登錄界面長下面這樣,由qt designer設計 login.py 二、登錄界面 邏輯代碼loginLogic.py 三、主界面comsumeType.py 四、主界面邏輯代碼comsumeTypeLogic.py 五、登錄界面跳轉至主界面 六、主界面回到登錄界面 一、登錄界面長下面這樣,由qt d…