java抽象方法實例_Java的抽象方法和抽象類實例詳解

本文實例講述了Java的抽象方法和抽象類。分享給大家供大家參考,具體如下:

一 點睛

抽象方法是只有方法簽名,沒有方法實現的方法。

抽象方法和抽象類必須使用abstract修飾符來定義,有抽象方法的類只能被定義為抽象類,抽象類里可以沒有抽象方法。

抽象類和抽象方法的規則:

抽象類必須使用abstract修飾符來修飾,抽象方法必須使用abstract修飾符來修飾,抽象方法不能有方法體。

抽象類不定被實例化。即使抽象類里不包含抽象方法,這個抽象類也不能創建實例。

抽象類可以包含成員變量、方法(普通方法和抽象方法)、構造器、初始化塊、內部類(接口、枚舉)5種成分。抽象類的構造器不能用于創建實例,主要用于被其子類調用。

含有抽象方法的類(包括直接定義一個抽象方法;或繼承了一個抽象父類,但沒有完全實現父類包含的抽象方法;或實現了一個接口,但沒有完全實現接口包含的抽象方法三種情況)只能定義為抽象類。

二 代碼

1 抽象類

public abstract class Shape

{

{

System.out.println("執行Shape的初始化塊...");

}

private String color;

// 定義一個計算周長的抽象方法

public abstract double calPerimeter();

// 定義一個返回形狀的抽象方法

public abstract String getType();

// 定義Shape的構造器,該構造器并不是用于創建Shape對象,

// 而是用于被子類調用

public Shape(){}

public Shape(String color)

{

System.out.println("執行Shape的構造器...");

this.color = color;

}

// 省略color的setter和getter方法

public void setColor(String color)

{

this.color = color;

}

public String getColor()

{

return this.color;

}

}

2 Triangle類

public class Triangle extends Shape

{

// 定義三角形的三邊

private double a;

private double b;

private double c;

public Triangle(String color , double a

, double b , double c)

{

super(color);

this.setSides(a , b , c);

}

public void setSides(double a , double b , double c)

{

if (a >= b + c || b >= a + c || c >= a + b)

{

System.out.println("三角形兩邊之和必須大于第三邊");

return;

}

this.a = a;

this.b = b;

this.c = c;

}

// 重寫Shape類的的計算周長的抽象方法

public double calPerimeter()

{

return a + b + c;

}

// 重寫Shape類的的返回形狀的抽象方法

public String getType()

{

return "三角形";

}

}

3 Circle類

public class Circle extends Shape

{

private double radius;

public Circle(String color , double radius)

{

super(color);

this.radius = radius;

}

public void setRadius(double radius)

{

this.radius = radius;

}

// 重寫Shape類的的計算周長的抽象方法

public double calPerimeter()

{

return 2 * Math.PI * radius;

}

// 重寫Shape類的的返回形狀的抽象方法

public String getType()

{

return getColor() + "圓形";

}

public static void main(String[] args)

{

Shape s1 = new Triangle("黑色" , 3 , 4, 5);

Shape s2 = new Circle("黃色" , 3);

System.out.println(s1.getType());

System.out.println(s1.calPerimeter());

System.out.println(s2.getType());

System.out.println(s2.calPerimeter());

}

}

三 運行

執行Shape的初始化塊...

執行Shape的構造器...

執行Shape的初始化塊...

執行Shape的構造器...

三角形

12.0

黃色圓形

18.84955592153876

四 注意

abstract不能用于修飾成員變量,不能用于修飾局部變量,即沒有抽象變量、沒有抽象成員變量等說法;abstract也不能用于修飾構造器、沒有抽象構造器,抽象類里定義的構造器只能是普通構造器。

static和abstract不能同時修飾某個方法,但它們可以同時修飾內部類。

abstract關鍵字修飾的方法必須被子類重寫才有意義,否則這個方法永遠不會有方法體,因此abstract方法不能定義為private訪問權限,即private和abstract不能同時修飾方法。

希望本文所述對大家java程序設計有所幫助。

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

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

相關文章

[python opencv 計算機視覺零基礎到實戰] 九、模糊

一、學習目標 了解什么是卷積了解模糊的使用方法與應用 如有錯誤歡迎指出~ 二、了解模糊的應用 上一篇:[python opencv 計算機視覺零基礎到實戰] 八、ROI泛洪填充 2.1 了解卷積是什么 在本節中,卷積我們不過多的進行深入講解,我本人對卷積也只是稍…

windows update更新失敗 安全模式進不去

今天一同事的電腦遇到問題了,提示“windows update更新失敗”。最后一次正確配置不行, 安全模式進不去。解決方法:強制關機開機后F8啟動修復模式(系統盤或者pe進入也可以),系統還原,找最后的還原…

windbg的時間旅行實現對 C# 程序的終極調試!

一:什么是時間旅行 簡而言之就是把程序的執行流拍成vlog,這樣就可以對 vlog 快進或者倒退,還可以分享給別人做進一步的分析,是不是想都不敢想。很開心的是 windbg preview 版本中已經實現了,叫做 時間旅行調試 TTD&…

【神經網絡】神經網絡結構在命名實體識別(NER)中的應用

命名實體識別(Named Entity Recognition,NER)就是從一段自然語言文本中找出相關實體,并標注出其位置以及類型,如下圖。它是NLP領域中一些復雜任務(例如關系抽取,信息檢索等)的基礎。…

centos安裝禪道的步驟

1、下載 XAMPP 套件: https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline 下載的文件是 xampp-linux-x64-7.0.6-0-installer.run 2、 執行 ./xampp-linux-x64-7.0.6-0-installer.run 3、 啟動 /opt/lampp/lampp start 4、 下載禪道 ZenTa…

[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃

一、學習目標 了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片 上一篇:[python opencv 計算機視覺零基礎到實戰] 九、模糊 如有錯誤歡迎指出~ 二、了解模糊與美顏 2.1 使用高斯模糊降噪 由于很多小伙伴反應拋開原理或理論講解使用用法對于初學…

Android之自定義View實現帶4圓角或者2圓角的效果

1 問題 實現任意view經過自定義帶4圓角或者2圓角的效果 2 原理 1) 實現view 4圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 2) 實現view上2圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 安卓源碼里面有這樣的類 package and…

java trim()函數_Java - split()函數和trim()函數的使用方法

split()函數和trim()函數的使用方法本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141詳細參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlsplit()函數是依據參數如",", "-", " "等, 切割…

分布式服務器集群架構方案思考

0x01.大型網站演化 簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。 集群主要分為:高可用集群(High Availability Cluster),負載均衡集群(Load Balance Cluster&…

交互式 .Net 容器版

1背景介紹 在之前的文章 - 交互式 .Net 中已經介紹了什么是 交互式 .Net,文中是通過 Visual Studio Code 插件的方式實現 交互式 .Net 的。現在,我們將使用容器的方式實現 交互式 .Net。2鏡像構建 1. DockerfileFROM mcr.microsoft.com/dotn…

Java 集合練習——3

創建Map集合,創建Emp對象,并將創建的Emp對象添加到集合中,并將id為005的對象從集合中移除 創建Emp類: package jihe;public class Emp {private String id;public String getId() {return id;}public void setId(String id) {this…

[python opencv 計算機視覺零基礎到實戰] 十一找到圖片中指定內容

一、學習目標 了解圖片內容定位方法matchTemplate使用了解minMaxLoc方法使用 上一篇《[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃》 如有錯誤歡迎指出~ 二、了解從一張圖片中找到指定內容的方法 2.1 使用matchTemplate函數對圖片中的指定內容進行查找 有…

Linq 實現 DataTable 行轉列

前幾天寫了一篇sqlserver 行轉列,http://www.cnblogs.com/li-peng/archive/2012/02/01/2334973.html 由于工作需要,要把查出來的DataTable實現 行轉列, 正好這一陣子在用Linq 就做了一個行轉列的小例 子 轉換前的table: 轉換后的table: 代碼…

Android Studio之編譯提示\app\src\main\res\values\colors.xml:1:1 Error:前言有不允許的內容

1 問題 Android Studio新建立的項目運行莫名其妙提示錯誤如下 app\src\main\res\values\colors.xml:1:1 Error:前言有不允許的內容 然后我把res目錄下面的colors.xml文件打開看如下 <?xml version"1.0" encoding"utf-8"?> <resources>&l…

python順序執行 toggle_編寫腳本在Python中運行多個腳本

我正在建一個鬧鐘項目。誰能告訴我如何編寫一個腳本來調用所有其他腳本嗎。例如&#xff0c;我在我的樹莓派上有三個腳本叫做LCDTESTFORPI.py&#xff0c;另一個叫做“ex 7”分段.py“還有一個叫”報警pi.py”. 我希望能夠運行一個名為“alarmpi”的腳本_初始py“它將運行所有其…

AndroidService 深度分析(2)

AndroidService 深度分析&#xff08;2&#xff09; 上一篇文章我們Service的生命周期進行了測試及總結。這篇文章我們介紹下綁定執行的Service的實現。 綁定執行的Service可能是僅為本應用提供服務&#xff0c;稱為本地Service。也可能為其它應用提供跨進程服務&#xff0c;即…

Hello Playwright:(3)基本概念

下面介紹一下 Playwright 中的基本概念&#xff1a;Headless 瀏覽器Playwright 需要特定版本的瀏覽器二進制文件才能運行。這些瀏覽器都支持 2 種 運行模式&#xff1a;Headless&#xff0c;無瀏覽器 UI&#xff0c;運行速度較快&#xff0c;常用于自動化運行Headed&#xff0c…