最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

抽象類必須要有抽象方法嗎?

2022-08-31 12:13 作者:網(wǎng)星軟件  | 我要投稿

1.什么是抽象類?

類--通過class關(guān)鍵字創(chuàng)建的java元素

抽象類---通過abstract class創(chuàng)建的java元素

判斷一個(gè)java類是否是一個(gè)抽象類,看它是否使用abstract修飾。

2.為什么要有抽象類?

為了減少代碼的重復(fù)編寫,提供代碼的重用性。

例如:坐車收費(fèi)----公交車收費(fèi)【全程1元】

? ? ? ? ? ? ? ? ? ? ? ? ----出租車收費(fèi)【每公里1元】

公交車 extends 汽車[收費(fèi)功能]

出租車 extends 汽車[收費(fèi)功能]

汽車提供了收費(fèi)功能,但是沒有具體的收費(fèi)標(biāo)準(zhǔn),具體的收費(fèi)標(biāo)準(zhǔn)是由公交車/出租車根據(jù)自身的實(shí)際情況決定收費(fèi)標(biāo)準(zhǔn)。

我們可以認(rèn)為汽車是一個(gè)抽象類,它只提供功能,不給具體實(shí)現(xiàn);

公交車/出租車都是汽車這個(gè)抽象類的子類,公交車/出租車就會從汽車的抽象類上繼承功能,根據(jù)自身的實(shí)際情況實(shí)現(xiàn)這個(gè)功能。

抽象類為同一種類的事物提供功能,讓它的子類根據(jù)自身的實(shí)際情況實(shí)現(xiàn)這個(gè)功能。

3.抽象類中可以有哪些元素?

類---實(shí)例變量,靜態(tài)成員變量,構(gòu)造方法,實(shí)例方法,靜態(tài)方法

抽象類---實(shí)例變量,靜態(tài)成員變量,構(gòu)造方法,實(shí)例方法,靜態(tài)方法,抽象方法

抽象方法---1.使用abstract關(guān)鍵字修飾

? ? ? ? ? ? ? ? ? 2.沒有方法體“{}”

package com.wangxing.chouxiang1;

//抽象類--通過abstract class創(chuàng)建的java元素

public abstract class ChouXiangLei1 {

//實(shí)例變量

public? String? shili="實(shí)例變量";

//靜態(tài)成員變量

public static String? staticbianliang="靜態(tài)成員變量";

//構(gòu)造方法

public ChouXiangLei1(){

System.out.println("抽象類中的構(gòu)造方法");

}

//實(shí)例方法

public void? shiliMethod(){

System.out.println("抽象類中的實(shí)例方法");

}

//靜態(tài)方法

public static void? staticMethod(){

System.out.println("抽象類中的靜態(tài)方法");

}

//抽象方法

//1.使用abstract關(guān)鍵字修飾

//2.2.沒有方法體“{}”

public abstract void? abstractMethod();

}

4.抽象類的具體用法

? 1.抽象類不能通過new+構(gòu)造方法的形式創(chuàng)建對象的

? 2.抽象類中可以有抽象方法,可以一個(gè)抽象方法都沒有

? 3.當(dāng)一個(gè)普通的java類繼承一個(gè)抽象類,就需要實(shí)現(xiàn)抽象類提供的所有抽象方法也可以將這個(gè)普通的java類改成抽象類

? 4.抽象類可以繼承抽象類

? 5.當(dāng)某一個(gè)普通的java類中的方法參數(shù)是抽象類類型的時(shí)候,可以傳遞上轉(zhuǎn)型對象,也可以是抽象類的子類對象。

5.賣水果實(shí)例

package com.wangxing.test1;

//水果抽象類

public abstract class ShuiGuo {

????//抽象方法

????public abstract void? chi();

}

package com.wangxing.test1;

//水果--西瓜

public class XiGua extends ShuiGuo{

????@Override

????public void chi() {

????????System.out.println("用刀切開吃西瓜");

????}

}

package com.wangxing.test1;

//水果--蘋果

public class PingGuo extends ShuiGuo{

????@Override

????public void chi() {

????????System.out.println("削皮以后吃蘋果");

????}

}

package com.wangxing.test1;

public class ShuiGuoDian {

????public static ShuiGuo? maiShuiGuo(String name){

????????ShuiGuo? sg=null;

????????if(name.equals("西瓜")){

????????????sg=new XiGua();

????????}

????????if(name.equals("蘋果")){

????????????sg=new PingGuo();

????????}

????????if(name.equals("桃子")){

????????????sg=new TaoZi();

????????}

????????return sg;

????}

}

package com.wangxing.test1;

public class TestMain {

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

????ShuiGuo sg=ShuiGuoDian.maiShuiGuo("桃子");

????if(sg!=null){

????????sg.chi();

????}else{

????????System.out.println("沒有買到想吃的水果");

????}

????}

}

總結(jié):

抽象類就是使用abstract關(guān)鍵字修飾的java類。判斷一個(gè)類是不是一個(gè)抽象類主要看class前面有沒有abstract關(guān)鍵字,而不是看它有沒有抽象方法。

抽象方法--1.abstract修飾

?????????????????2.沒有方法體

抽象類中可以有抽象方法,也可以一個(gè)抽象方法都沒有。

普通的java類是不能有抽象方法的,能夠包含抽象方法的java類一定是抽象類

抽象類必須要有抽象方法嗎?的評論 (共 條)

分享到微博請遵守國家法律
晋中市| 泰来县| 分宜县| 凌海市| 庐江县| 蓬溪县| 涞源县| 海淀区| 阆中市| 辽源市| 乐清市| 凤凰县| 杭锦后旗| 西昌市| 酉阳| 广灵县| 乌什县| 富民县| 沙坪坝区| 稻城县| 康定县| 合江县| 蒙阴县| 乳山市| 涟水县| 长兴县| 遂宁市| 星座| 天等县| 伊金霍洛旗| 黑河市| 承德县| 隆回县| 当阳市| 宜州市| 昭平县| 钟山县| 苍山县| 黄浦区| 会同县| 墨脱县|