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

歡迎光臨散文網(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類一定是抽象類

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

分享到微博請遵守國家法律
九龙县| 太康县| 高阳县| 寿阳县| 咸阳市| 资溪县| 白水县| 长葛市| 阜新| 贺兰县| 怀安县| 拉萨市| 东至县| 西盟| 梨树县| 尼玛县| 乐平市| 科尔| 元谋县| 桑日县| 龙南县| 乡宁县| 庄河市| 平罗县| 东宁县| 高平市| 柳林县| 驻马店市| 南郑县| 临江市| 晋中市| 英超| 阜新市| 金寨县| 太康县| 托克逊县| 视频| 农安县| 寻乌县| 扶风县| 祁东县|