【從零開始學Java筆記】關鍵字abstract

2020-04-07 16:07:59來源:博客園 閱讀 ()

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

【從零開始學Java筆記】關鍵字abstract

大家可以關注作者的賬號,關注從零開始學Java筆記文集。也可以根據目錄前往作者的博客園博客進行學習。本片文件將基于黑馬程序員就業班視頻進行學習以及資料的分享,并記錄筆記和自己的看法。歡迎大家一起學習和討論。

【從零開始學Java筆記】目錄

什么是抽象?

在Java中抽象概念常用于方法和類
抽象方法:如果你想設計這樣一個類,該類包含一個特別的成員方法,該方法的具體實現由它的子類確定,那么你可以在父類中聲明該方法為抽象方法。抽象方法只包含一個方法名,而沒有方法體。
抽象類:在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。

關鍵字:abstract(用于修飾方法和類)

舉個例子

public class AbstractTest {
	public static void main(String[] args) {
		Programmer p = new Programmer();
		p.name = "劉備";
		p.work();
		
		Manager m = new Manager();
		m.name = "張飛";
		m.work();
		m.bouns();		
	}
}

abstract class Employee{
    //程序員和經理的共同屬性	
    String name;
	int id;
	double pay;
	
    //抽象類沒有方法體
	public abstract void work();
}

class Programmer extends Employee{

	@Override
    //對抽象方法的重寫
	public void work() {
		System.out.println(name+"的工作內容是寫代碼");
		
	}
	
}

class Manager extends Employee{

	@Override
    //對抽象方法的重寫
	public void work() {
		System.out.println(name+"的工作內容是管理程序員");
		
	}
	
	public void bouns() {
		System.out.println("獲得獎金");
	}
	
}

可以看出程序員和經理有很多共性,例如姓名等屬性和辦公這個方法,所有寫一個父類來提高代碼的復用性。但是很顯然程序員和經理工作不相同,所以在父類中無法對work()方法進行編寫,所以不寫方法體,再由子類對父類的抽象方法進行重寫,這就是抽象。

抽象類的特點:

抽象方法只能在抽象類里面
抽象類和抽象方法必須被abstract修飾
抽象類不能創建對象(不能實例化)
抽象類中可以有非抽象的方法
抽象類和類的關系也是維承
一個類維承了抽象類要么重寫所有的抽象方法,要么他自己是抽象類

抽象類的成員特點:

  • 成員變量
    可以有成員變量
    可以有常量
  • 成員方法
    可以有抽象方法
    可以有非抽象方法
  • 構造方法
    可以有構造方法的,需要對抽象類的成員變量進行初始化

抽象關鍵字abstract不可以和哪些關鍵字共存?

抽象方法,沒有方法體,必須被重寫才能使用,所以不能被重寫的方法就沒有抽象的意義。
關鍵字final是用來修飾類、成員變量、成員方法,修飾的類無法被繼承,成員變量無法修改,成員方法無法被重寫,所以abstract和final水火不容。
父類的private修飾的成員變量、成員方法也不能被子類訪問,所以和abstract共存沒有意義。

抽象類中是否有構造函數?

雖然抽象類不能被實例化,但是仍然有成員變量,需要被初始化,所有有構造函數。
java抽象類的構造方法和普通類的構造方法一樣,都是用來初始化類,只是抽象類的構造方法不能直接調用因為抽象類不能實現實例,但是一旦一個普通類繼承了抽象類也可以在構造函數中調用其抽象類的構造函數。

抽象類中可不可以沒有抽象方法?

可以,如果一個方法不想被實例化,就可以使用沒有抽象方法的抽象類,例如IO流中的writer和reader類。


原文鏈接:https://www.cnblogs.com/zllk/p/12656805.html
如有疑問請與原作者聯系

標簽:文件常用POST函數程序工作

版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點,本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有

上一篇:【從零開始學Java筆記】繼承

下一篇:【從零開始學Java筆記】關鍵字final

韩国三级在线看免费