【Java知識點總結】 final關鍵字與抽象類別

來源:互聯網
上載者:User

標籤:final   抽象類別   

final關鍵字:概念:

學習了繼承我們發現繼承有一個弊端,就是它會打破封裝性;如果不讓其他類繼承該類,就不會有重寫了,→可以通過Java中的幾個關鍵字來實現,final(最終化)。

final關鍵字是一個修飾符,可以修飾類、方法、變數(成員變數、局部變數、靜態變數)。

什麼時候用?

當程式中一個資料使用時是固定不變的,這時為了增加閱讀性,可以給該資料起個名字,這就是變數,為了保證這個變數的值不被修改,加上final修飾,這就是一個閱讀性很強的常量。書寫規範:被final修飾的常量名所有的字母都是大寫的,如果由多個單片語成,單詞間通過  _  串連。

特點:

1,final修飾的類是一個最終類,不餓能夠再派生子類(如果類中出現部分可以重寫,部分不可以,只要給指定的方法最終化就可以了);

2,final修飾的方法是最紅方法,不可以被重寫;

3,final修飾的變數是一個常量,只能被賦值一次。


抽象類別:產生:

在描述事物時,沒有足夠的資訊描述一個事物,這時該事物就是抽象事物,它的功能也不具體,這些不具體的功能需要在類中標識出來,使用Java中的關鍵字abstract(抽象)。

定義了抽象函數的類也必須被abstract關鍵字修飾,被abstract關鍵字修飾的類是抽象類別。

特點:

1,抽象類別和抽象方法都需要被abstract修飾,抽象方法一定要定義在抽象類別中;

2,抽象類別不可以建立執行個體,原因:調用抽象方法沒有意義;

3,只有覆蓋了抽象類別中所有的抽象方法後,其子類才可以執行個體化,否則該子類還是一個抽象類別。

【細節問題】

1,抽象類別一定是個父類?
是的,因為不斷抽取而來的。


2,抽象類別是否有建構函式?
有,雖然不能給自己的對象初始化,但是可以給自己的子類對象初始化。
抽象類別和一般類的異同點:
相同:
1,它們都是用來描述事物的。
2,它們之中都可以定義屬性和行為。

不同:
1,一般類可以具體的描述事物。
抽象類別描述事物的資訊不具體
2,抽象類別中可以多定義一個成員:抽象函數。
3,一般類可以建立對象,而抽象類別不能建立對象。

3,抽象類別中是否可以不定義抽象方法。
是可以的,那這個抽象類別的存在到底有什麼意義呢?僅僅是不讓該類建立對象。

4,抽象關鍵字abstract不可以和哪些關鍵字共存?
1,final:
2,private:
3,static:


練習:

需求:公司中程式員有姓名,工號,薪水,工作內容。專案經理除了有姓名,工號,薪水,還有獎金,工作內容
在問題領域中先找尋其中涉及的對象。

程式員
屬性:姓名,工號,薪水
行為:工作

專案經理
屬性:姓名,工號,薪水,獎金
行為:工作

這些對象是否有關係呢?發現了他們之間的共性,應該存在著關係。
可以將他們的共性向上抽取到共性類型:員工。
員工:
屬性:姓名,工號,薪水
行為:工作
發現員工的工作內容本身就不具體。應該是抽象的,由具體的子類來體現的。

abstract class Employee{private String name;private String id;private double pay;/**構造一個員工對象,一初始化就具備著三個屬性。*/public Employee(String name,String id,double pay){this.name = name;this.id = id;this.pay = pay;}/**工作行為。*/public abstract void work();}//具體的子類:程式員。class Programmer extends Employee{public Programmer(String name,String id,double pay){super(name,id,pay);}public void work(){System.out.println("code....");}}//具體的子類:經理。class Manager extends Employee{//特有屬性。private double bonus;public Manager(String name,String id,double pay,double bonus){super(name,id,pay);this.bonus = bonus;}public void work(){System.out.println("manage");}}class AbstractTest {public static void main(String[] args) {System.out.println("Hello World!");}}

————畢老師day09視頻

【Java知識點總結】 final關鍵字與抽象類別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.