① java中抽象方法不能為private,final或者static,為什麼細細說明,或給個例子
4)抽象方法不能為private,final或者static,為什麼?馬克-to-win:抽象方法的最實質的意
義在於被未來的子類覆蓋實現掉。它自己是個空方法。private的實質意義在於本類其他方法調用它。你自己是個空方法,別人調用你有什麼用?所以
abstract和private在一起毫無意義。final規定子類不能再覆蓋它。abstract是專等著要別人來覆蓋,二者矛盾。所以不能放在一起
使用。有關static,我們上一章講過:馬克-to-win:static的成員是在程序執行到main時就已經確定的。要不為什麼起
名叫靜態static呢?而本章後面,我們要講多態的動態方法調度。動態方法調度就是指在運行時才決定執行哪個方法(是子類的還是父類的)。比如運行時如
果用戶輸入自行車,就執行自行車的駕駛方法。馬克-to-win:如果用戶輸入小轎車,就執行小轎車的駕駛方法,涉及到用戶,這些都只能在運行時才能幹。
而abstract一定用到動態方法調度。所以這靜態和動態二者是矛盾的,不能一起用。因為道理是這樣,所以當時sun公司的設計者就這樣設計
了.。。。。。。。。。
詳情網上找「馬克-to-win」,參考他的網站或他的網路空間:java第三章的內容,如果實在找不到,按我下面說的地址找:
網站名是:mark-to-win.com
再附加上下邊的路徑地址: /JavaBeginner/JavaBeginner3_web.html#AbstractNotFinalPrivateStatic
② java中介面和抽象類以及它們的屬性方法都分別可以用什麼訪問修飾符
不能用private修飾,不然抽象繼承不了,介面實現不了。其他的應該都可以。
public 使用對象:最廣,類、介面、變數、方法
protected使用對象:變數、方法 注意:不能修飾類(外部類)
default 使用對象:類、介面、變數、方法。(即預設,什麼也不寫)
private 使用對象:變數、方法 注意:不能修飾類(外部類)
abstract使用對象:類、介面、方法
static 使用對象:類、變數、方法、初始化函數(注意:修飾類時只能修飾 內部類 )
final 使用對象:類、變數、方法
--詳情見http://blog.chinaunix.net/uid-26434689-id-3403828.html
(如有疑問或侵權問題,請另行通知)
③ java中抽象方法不能使用修飾符_和_修飾
private和final
④ java里 static能修飾抽象方法嗎借口呢 求個案例
java中抽象類的方法可以不能用static來修飾,自由抽象類的屬性可以。介面中的方法也不行,介面只是抽象類的一個特殊的。
⑤ java 抽象方法可以是static嗎
static是靜態的。抽象方法的目的是希望子類重寫(其實也不能叫重寫,應該叫實現)這個抽象方法。而你又定義為static,這里就出現一個問題:static的方法能直接通過類名調用,而你這個方法沒有具體的實現,這里就會自相矛盾,所以抽象方法不能用static修飾。
⑥ 抽象類的抽象方法可以用private修飾嗎
C#用多種修飾符來表達類的不同性質。根據其保護級C#的類有五種不同的限制修飾符: public可以被任意存取; protected只可以被本類和其繼承子類存取; internal只可以被本組合體(Assembly)內所有的類存取,組合體是C#語言中類被組合後的邏輯單位和物理單位,其編譯後的文件擴展名往往是「.DLL」或「.EXE」。 protected internal唯一的一種組合限制修飾符,它只可以被本組合體內所有的類和這些類的繼承子類所存取。 private只可以被本類所存取。 如果不是嵌套的類,命名空間或編譯單元內的類只有public和internal兩種修飾。 new修飾符只能用於嵌套的類,表示對繼承父類同名類型的隱藏。 abstract用來修飾抽象類,表示該類只能作為父類被用於繼承,而不能進行對象實例化。抽象類可以包含抽象的成員,但這並非必須。abstract不能和new同時用。下面是抽象類用法的偽碼: abstract class A{public abstract void F();}abstract class B: A{public void G() {}}class C: B{public override void F(){//方法F的實現}}抽象類A內含一個抽象方法F(),它不能被實例化。類B繼承自類A,其內包含了一個實例方法G(),但並沒有實現抽象方法F(),所以仍然必須聲明為抽象類。類C繼承自類B,實現類抽象方法F(),於是可以進行對象實例化。 sealed用來修飾類為密封類,阻止該類被繼承。同時對一個類作abstract和sealed的修飾是沒有意義的,也是被禁止的。
⑦ Java abstract類中可以有非abstract方法,但該方法不可以用final修飾對不對
publicabstractclassFinalTest{
/**
*@Title:test
*@Description:抽象方法不能使用<i>final</i>修飾,因為final修飾的方法是最終的/不可修改的,
*所以被修飾的方法不能是抽象的,由此可知<i>Interface</i>中的介面方法也不能使用final修飾.
*但成員屬性只能是<code>publicstaticfinal</code>修飾,即使沒有添加修飾符時.
*/
();
/**
*@Title:test2
*@Description:當非抽象方法已經是最理想的邏輯時,通常會使用<i>final</i>修飾避免其子類修改該介面的邏輯.
*/
(){
}
}
希望能幫助你!
⑧ 什麼是抽象類和抽象方法
抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類。抽象類有點類似「模板」的作用,目的是根據其格式來創建和修改新的類。對象不能由抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象。當一個類被聲明為抽象類時,要在這個類前面加上修飾符abstract。
在抽象類中的成員方法可以包括一般方法和抽象方法。抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒有方法體,也就是說抽象方法只需要聲明而不需要實現。當一個方法為抽象方法時,意味著這個方法必須被子類的方法所重寫,否則其子類的該方法仍然是abstract的,而這個子類也必須是抽象的,即聲明為abstract。
抽象類中不一定包含抽象方法,但是包含抽象方法的類一定要被聲明為抽象類。抽象類本身不具備實際的功能,只能用於派生其子類。抽象類中可以包含構造方法,但是構造方法不能被聲明為抽象。
抽象類不能用final來修飾,即一個類不能既是最終類又是抽象類。
abstract不能與private、static、final、native並列修飾同一個方法。
程序舉例:abstract
class
Animal
//定義抽象類
abstract
void
eat();
//定義抽象方法}class
Horse
extends
Animal
//定義繼承Animal的子類
void
eat()
//重寫父類的抽象方法
}class
Dog
extends
Animal
void
eat()
}class
test}運行結果:
馬吃草料!
狗吃骨頭!
如果幫助到您,請記得採納為滿意答案哈,謝謝!祝您生活愉快!
vae.la
⑨ C#中的抽象類為什麼不能用static修飾其成員
是正常的。
static表示的意思就是靜態。其實如果程序內含有靜態成員時,類默認就是靜態的。也就是說,如果含有靜態成員的類,其實前邊加不加static是一樣的效果的!
對於你補充的問題,其實不應該這么說的,應該說那些不能被靜態修飾符修飾才對。因為除了他不能修飾的,其餘的都能修飾。
不能修飾超類(抽象類),超類與抽象類是不同領域的相同術語,一般在java中稱超類,在c#等微軟語言中稱抽象類。超類指的是含有抽象方法的類,因此該類只能被繼承,不成具體化實體化。而抽象類指的是不能被實例化的類,只能用於繼承,含有抽象方法——你暈不暈?其實他們是一個概念兩個不同范疇中的術語。與之相同的還有介面,也沒有實體,所以,不能修飾抽象類(超類)與介面。換句話說不能與abstrat聯用,不能放置在interface之前。
靜態方法不般不用於重寫——已經是靜態了,還重寫什麼勁,所以不與override聯用,不用與virtual虛方法聯用。其他的都可以使用。