摘要:類(lèi)可以用修飾,表示抽象類(lèi),抽象類(lèi)不能直接被實(shí)例化。但是繼承自這個(gè)抽象類(lèi)的方法就可以被實(shí)例化。
類(lèi)可以用 abstract 修飾,表示抽象類(lèi),抽象類(lèi)不能直接被實(shí)例化。但是,繼承了抽象類(lèi)的普通類(lèi)是可以被實(shí)例化的。如:
//one.php
實(shí)例化的時(shí)候會(huì)報(bào)Fatal error的錯(cuò)誤。
但是繼承自這個(gè)抽象類(lèi)的方法就可以被實(shí)例化。如:
//index.php include "one.php"; class index extends one { function __construct(){ parent::__construct(); } } $obj = new index;
除了類(lèi)可以用 abstract 修飾之外,方法也能被 abstruct 修飾,為抽象方法。抽象方法真的是很抽象,它并沒(méi)有內(nèi)容,如:
如果方法被 abstruct 修飾,那么這個(gè)類(lèi)必須用abstruct,不然就
會(huì)報(bào)錯(cuò)。也就是說(shuō)抽象類(lèi)可以有普通的方法,但是抽象方法必須在抽象類(lèi)里面定義,并且,如果繼承了這個(gè)有抽象方法的抽象類(lèi),那么在你繼承的這個(gè)類(lèi)里面必須重寫(xiě)這個(gè)方法,否則依然會(huì)報(bào)錯(cuò)。如:
但是抽象類(lèi)中的抽象方法似乎不能被定義為靜態(tài)的,定義了之后就報(bào)錯(cuò)。如:
還有,抽象類(lèi)是可以繼承抽象類(lèi)的,并且不需要重寫(xiě)父類(lèi)的抽象方法,它的抽象方法不能和父類(lèi)的抽象方法同名,他們的關(guān)系就像是拓展延伸的關(guān)系。如:
由于平時(shí)接觸這些也不多,主要都是基于框架開(kāi)發(fā)或者直接在其他系統(tǒng)上二次開(kāi)發(fā),對(duì)這些稍微底層一點(diǎn)的知識(shí)理解的不透徹,在我的理解看來(lái),抽象類(lèi)和方法主要是用在比較底層的被繼承的類(lèi)中,供其他繼承的類(lèi)去拓展。但是是否對(duì)于性能是否有改變就不大清楚了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21402.html
摘要:抽象類(lèi)和接口小記抽象類(lèi)和接口實(shí)現(xiàn)了的多態(tài)多態(tài)是面向?qū)ο蟪绦蛘Z(yǔ)言的核心在項(xiàng)目開(kāi)發(fā)過(guò)程中其實(shí)很少使用抽象類(lèi)接口用得比較多今天小記一下抽象類(lèi)和接口的區(qū)別抽象類(lèi)抽象類(lèi)不能被實(shí)例化抽象類(lèi)可以繼承可以定義變量可以定義構(gòu)造方法抽象方法的要顯式的寫(xiě)出來(lái)其子 Java抽象類(lèi)和接口小記 Java抽象類(lèi)和接口實(shí)現(xiàn)了java的多態(tài).多態(tài)是面向?qū)ο蟪绦蛘Z(yǔ)言的核心,在項(xiàng)目開(kāi)發(fā)過(guò)程中,其實(shí)很少使用抽象類(lèi),接口用得比...
摘要:如果一個(gè)非抽象類(lèi)遵循了某個(gè)接口,就必須實(shí)現(xiàn)該接口中的所有方法。抽象類(lèi)是對(duì)整個(gè)類(lèi)整體進(jìn)行抽象,包括屬性行為,但是接口卻是對(duì)類(lèi)局部行為進(jìn)行抽象。因此最好的解決辦法是單獨(dú)將報(bào)警設(shè)計(jì)為一個(gè)接口,包含行為設(shè)計(jì)為單獨(dú)的一個(gè)抽象類(lèi),包含和兩種行為。 一、抽象類(lèi) 二、接口 三、抽象類(lèi)和接口的區(qū)別 一、抽象類(lèi) 在了解抽象類(lèi)之前,先來(lái)了解一下抽象方法。抽象方法是一種特殊的方法:它只有聲明,而沒(méi)有具體的實(shí)現(xiàn)...
摘要:抽象方法沒(méi)有方法體抽象方法權(quán)限修飾符不能為抽象方法的目的就是為了讓子類(lèi)繼承重寫(xiě)的,所以抽象方法不能私有,不能修飾。另外,添加默認(rèn)方法不會(huì)影響函數(shù)式接口的使用。 原文:抽象類(lèi)和接口的區(qū)別已經(jīng)變了 隨著JDK的不斷迭代,抽象類(lèi)和接口的區(qū)別已經(jīng)有了些許改變,你是否還停留在JDK 7 的答案呢? 定義 抽象類(lèi)定義通過(guò) abstract class public abstract class A...
摘要:最近一直在刷校招的題目,突然發(fā)現(xiàn)自己對(duì)接口和抽象類(lèi)的掌握并不牢固,所以想記錄一下對(duì)接口和抽象類(lèi)的理解一抽象類(lèi)抽象方法是一種特殊的方法它只有聲明,而沒(méi)有具體的實(shí)現(xiàn)。因?yàn)槌橄箢?lèi)中含有無(wú)具體實(shí)現(xiàn)的方法,所以不能用抽象類(lèi)創(chuàng)建對(duì)象。 最近一直在刷校招的題目,突然發(fā)現(xiàn)自己對(duì)接口和抽象類(lèi)的掌握并不牢固,所以想記錄一下對(duì)java接口和抽象類(lèi)的理解 一:抽象類(lèi) 抽象方法是一種特殊的方法:它只有聲明,而沒(méi)...
摘要:在設(shè)計(jì)模式中,抽象類(lèi)不能夠被實(shí)例化初始化,但是可以依靠具體類(lèi)的繼承來(lái)實(shí)現(xiàn)。對(duì)于大型項(xiàng)目來(lái)說(shuō),對(duì)象都是由基本的抽象類(lèi)繼承實(shí)現(xiàn),而這些類(lèi)的方法通常都由接口來(lái)定義。 原文地址:PHP設(shè)計(jì)模式(二):抽象類(lèi)和接口 Introduction 對(duì)于編程來(lái)說(shuō),對(duì)事物的抽象是一個(gè)老生常談的話題,抽象問(wèn)題更利于面向?qū)ο缶幊桃约俺绦蛟O(shè)計(jì)模式。和C/C++,Java,Python等語(yǔ)言一樣,PHP也支持面向...
摘要:抽象類(lèi)是對(duì)整個(gè)類(lèi)整體進(jìn)行抽象,包括屬性行為,但是接口卻是對(duì)類(lèi)局部行為進(jìn)行抽象。因此最好的解決辦法是單獨(dú)將報(bào)警設(shè)計(jì)為一個(gè)接口,包含行為設(shè)計(jì)為單獨(dú)的一個(gè)抽象類(lèi),包含和兩種行為。 抽象類(lèi)和接口的區(qū)別 1.語(yǔ)法層面上的區(qū)別 1)抽象類(lèi)可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié),而接口中只能存在public abstract 方法; 2)抽象類(lèi)中的成員變量可以是各種類(lèi)型的,而接口中的成員變量只能是pub...
閱讀 1007·2023-04-26 02:16
閱讀 1277·2019-08-30 15:55
閱讀 2841·2019-08-30 15:53
閱讀 3442·2019-08-29 15:38
閱讀 2961·2019-08-29 13:42
閱讀 2040·2019-08-26 13:34
閱讀 1912·2019-08-26 10:10
閱讀 3130·2019-08-23 14:40