導航:首頁 > 編程語言 > java實現抽象類

java實現抽象類

發布時間:2022-07-14 17:33:59

java程序,抽象類實現,求具體代碼

package test;
/**
*
* @author JinnL
*父類抽象類
*/
public abstract class Car {
//轉彎
abstract void turn();
//啟動
abstract void start();

void what(){
System.out.println("this is "+this.getClass().getSimpleName());
}
public static void main(String[] args) {
/**
* 方法入口
*/
Car[] cars ={new Bicycle(),new Automobile(),new GasAutomobile(),new DieselAutomobile()};
for (Car car : cars) {
car.start();
}
}
}
class Bicycle extends Car{

@Override
void turn() {
System.out.println("this is "+this.getClass().getSimpleName());
}

@Override
void start() {
System.out.println("this is "+this.getClass().getSimpleName());
}
void what(){
}

}
class Automobile extends Car{

@Override
void turn() {
System.out.println("this is "+this.getClass().getSimpleName());
}

@Override
void start() {
System.out.println("this is "+this.getClass().getSimpleName());
}

}

class GasAutomobile extends Automobile{
//重寫start turn
@Override
void turn() {
System.out.println("this is "+this.getClass().getSimpleName());
}

@Override
void start() {
System.out.println("this is "+this.getClass().getSimpleName());
}
}

class DieselAutomobile extends Automobile{
@Override
void start() {
System.out.println("this is "+this.getClass().getSimpleName());
}

void what(){
System.out.println("this is "+this.getClass().getSimpleName());

}
}

⑵ java中抽象類和介面的區別

抽象類是用來捕捉子類的通用特性的 。它不能被實例化,只能被用作子類的超類。抽象類是被用來創建繼承層級里子類的模板。

介面是抽象方法的集合。如果一個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。介面只是一種形式,介面自身不能做任何事情。

(2)java實現抽象類擴展閱讀:

抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。

通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱為抽象類,它不能生成對象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象。

抽象類是不完整的,它只能用作基類。在面向對象方法中,抽象類主要用來進行類型隱藏和充當全局變數的角色。

⑶ java中 抽象類不可以實現方法嗎

有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。
abstract修飾符在修飾類時必須放在類名前。
abstract修飾方法就是要求其子類覆蓋(實現)這個方法。調用時可以以多態方式調用子類覆蓋(實現)後的方法,也就是說抽象方法必須在其子類中實現,除非子類本身也是抽象類。
注意:父類是抽象類,其中有抽象方法,那麼子類繼承父類,並把父類中的所有抽象方法都實現(覆蓋)了,子類才有創建對象的實例的能力,否則子類也必須是抽象類。抽象類中可以有構造方法,是子類在構造子類對象時需要調用的父類(抽象類)的構造方法。
舉個簡單的例子下面有一個抽象類
abstract
class
E{
public
abstract
void
show();//public
abstract
可以省略
}
然後其它類如果繼承它通常為了實現它裡面的方法
class
F
extends
E{
void
show(){
//寫具體實現的代碼
}
}
最後再主方法裡面定義一個父類引用指向子類對象,就會發生多態現象,比如
E
e=new
F();
e.show();
實際調用了子類裡面的show()方法

⑷ java中抽象類的作用是什麼

通過繼承它實現多態,後期綁定,可以為將來要實現的東西做好介面,實現重用性,
例如:
abstract class A {
public abstract void doSomething();
}

class B extends A {
public void doSomething() {
System.out.println("do B");
}
}

class C extends A {
public void doSomething() {
System.out.println("do C");
}
}

public class Test {
public static void main(Stringp[] args) {
A a1 = new B();
A a2 = new C();
B b = new B();
C c = new C();
doSomething(a1); //這里
doSomething(a2); //這里
doSomething(b); //這里,如果下面的方法不是用抽象類作參數,比如用C c做參數,這里會有什麼問題?
doSomething(c); //這里
}

public static void doSomething(A a) {//這里,用抽象類,為什麼,自己思考
a.doSomething();
}
}

//這個例子只是抽象類的最基本的設計模式,和介面差不多

⑸ java抽象類裡面可以有實現嗎

有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。
abstract修飾符在修飾類時必須放在類名前。
abstract修飾方法就是要求其子類覆蓋(實現)這個方法。調用時可以以多態方式調用子類覆蓋(實現)後的方法,也就是說抽象方法必須在其子類中實現,除非子類本身也是抽象類。
注意:父類是抽象類,其中有抽象方法,那麼子類繼承父類,並把父類中的所有抽象方法都實現(覆蓋)了,子類才有創建對象的實例的能力,否則子類也必須是抽象類。抽象類中可以有構造方法,是子類在構造子類對象時需要調用的父類(抽象類)的構造方法。
舉個簡單的例子下面有一個抽象類
abstract
class
e{
public
abstract
void
show();//public
abstract
可以省略
}
然後其它類如果繼承它通常為了實現它裡面的方法
class
f
extends
e{
void
show(){
//寫具體實現的代碼
}
}
最後再主方法裡面定義一個父類引用指向子類對象,就會發生多態現象,比如
e
e=new
f();
e.show();
實際調用了子類裡面的show()方法

⑹ java抽象類和抽象方法之間的關系

1.抽象方法:在類中沒有方法體的方法,就是抽象方法。
2.抽象類:含有抽象方法的類就叫抽象類。
3.抽象類中的抽象方法必須被實現!
4.如果一個子類沒有實現父類中的抽象方法,則子類也成為了一個抽象類!
5.抽象類中的普通方法,可以不必實現。
6.用abstract來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法。
7.抽象類不能被實例化。
8.抽象方法只需聲明,而不需實現某些功能含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。

⑺ JAVA中的抽象類

抽象是java的特性之一,也是處理對象復雜性的一種技術!它是指只關注對象的重要細節,忽略次要細節!
在抽象類中定義的抽象方法,是由子類去實現,而不是去覆蓋,因為在父類中沒有具體的實現!
舉一個例子:
父類:
abstract
class
MyClass
{
abstract
void
display(String
str);
}
子類:
abstract
class
MyChild
extends
MyClass
{
void
display(String
str)
{
.....
}
void
method1()
{
....
}
void
method2()
{
....
}
........
}
這個時候我需要用到display方法,其他的都不用!我們可以這樣做:
MyClass
mc
=
new
MyChild();
mc.display();
我們聲明的是一個父類類型的引用,只需要記住父類中有這個方法的聲明,不用管它子類怎麼去實現,而且看都不用看method1,method2...我們可以把精力都集中在父類!如果只有一個單純的子類,很可能需要去看他的其他方法,尤其是當display與其他方法有關聯的時候!有了這樣一個抽象的父類,就可以省去這些精力,只需要知道父類有這個方法就行了!(或許這些在小程序中體現得並不很明顯)
以上都是個人的理解,有不對的地方,還希望大家指正!

⑻ JAVA抽象類可以繼承抽象類

您好,提問者:
1、抽象類只是一個特殊的類,但是也具備類的特性。

2、如果這個類中有抽象方法,那麼這個類必須定義為抽象類。

3、如果這個抽象類繼承了別的抽象類,那麼可以不覆蓋抽象方法。

因為:這個抽象類也是抽象的,沒辦法實現方法體。

例如一下代碼:

abstractclassA{
abstractvoidadd();
publicvoiddelete(){}
}
abstractclassBextendsA{
//繼承了抽象A類,因為也是抽象的,可以不寫抽象方法,當然也可以重寫抽象方法(切記抽象方法是沒有方法體的)
//abstractvoidadd();//也是沒有問題的

abstractvoidgetXX();
}
publicclassCextendsB{
//必須實現抽象方法
//繼承了B,也就繼承了A,AB方法都有,所以必須重寫這兩個抽象類的抽象方法
publicvoidadd(){}
publicvoiddelete(){}
publicvoidgetXX(){}
}

⑼ java抽象類

具有關鍵字abstract ,在實現內容上沒有完全定義的類就叫抽象類。 抽象類和介面的區別如下: ① 在類來繼承抽象類時,只需實現部分具體方法和全部抽象方法,而實現介面則要實現裡面的全部方法。 ②在介面中無成員變數,而抽象類中可有成員變數。 在Java中引進介面主要是為了解決多繼承的問題。 1)介面中不能有非抽象方法,但抽象類中可以有。 2)一個類能實現多個介面,但只能有一個父類。 3)介面並不屬於繼承結構,它實際與繼承無關,因此無關的類也可以實現同一個介面。 抽象類和方法 在我們所有樂器(Instrument)例子中,基礎類Instrument內的方法都肯定是「偽」方法。若去調用這些方法,就會出現錯誤。那是由於Instrument的意圖是為從它衍生出去的所有類都創建一個通用介面。 之所以要建立這個通用介面,唯一的原因就是它能為不同的子類型作出不同的表示。它為我們建立了一種基本形式,使我們能定義在所有衍生類里「通用」的一些東西。為闡述這個觀念,另一個方法是把Instrument稱為「抽象基礎類」(簡稱「抽象類」)。若想通過該通用介面處理一系列類,就需要創建一個抽象類。對所有與基礎類聲明的簽名相符的衍生類方法,都可以通過動態綁定機制進行調用(然而,正如上一節指出的那樣,如果方法名與基礎類相同,但自變數或參數不同,就會出現過載現象,那或許並非我們所願意的)。 如果有一個象Instrument那樣的抽象類,那個類的對象幾乎肯定沒有什麼意義。換言之,Instrument的作用僅僅是表達介面,而不是表達一些具體的實施細節。所以創建一個Instrument對象是沒有意義的,而且我們通常都應禁止用戶那樣做。為達到這個目的,可令Instrument內的所有方法都顯示出錯消息。但這樣做會延遲信息到運行期,並要求在用戶那一面進行徹底、可靠的測試。無論如何,最好的方法都是在編譯期間捕捉到問題。 針對這個問題,Java專門提供了一種機制,名為「抽象方法」。它屬於一種不完整的方法,只含有一個聲明,沒有方法主體。下面是抽象方法聲明時採用的語法: abstract void X(); 包含了抽象方法的一個類叫作「抽象類」。如果一個類里包含了一個或多個抽象方法,類就必須指定成abstract(抽象)。否則,編譯器會向我們報告一條出錯消息。 若一個抽象類是不完整的,那麼一旦有人試圖生成那個類的一個對象,編譯器又會採取什麼行動呢?由於不能安全地為一個抽象類創建屬於它的對象,所以會從編譯器那裡獲得一條出錯提示。通過這種方法,編譯器可保證抽象類的「純潔性」,我們不必擔心會誤用它。 如果從一個抽象類繼承,而且想生成新類型的一個對象,就必須為基礎類中的所有抽象方法提供方法定義。如果不這樣做(完全可以選擇不做),則衍生類也會是抽象的,而且編譯器會強迫我們用abstract關鍵字標志那個類的「抽象」本質。 即使不包括任何abstract方法,亦可將一個類聲明成「抽象類」。如果一個類沒必要擁有任何抽象方法,而且我們想禁止那個類的所有實例,這種能力就會顯得非常有用。 介面 「interface」(介面)關鍵字使抽象的概念更深入了一層。我們可將其想像為一個「純」抽象類。它允許創建者規定一個類的基本形式:方法名、自變數列表以及返回類型,但不規定方法主體。介面也包含了基本數據類型的數據成員,但它們都默認為static和final。介面只提供一種形式,並不提供實施的細節。 介面這樣描述自己:「對於實現我的所有類,看起來都應該象我現在這個樣子」。因此,採用了一個特定介面的所有代碼都知道對於那個介面可能會調用什麼方法。這便是介面的全部含義。所以我們常把介面用於建立類和類之間的一個「協議」。有些面向對象的程序設計語言採用了一個名為「protocol」(協議)的關鍵字,它做的便是與介面相同的事情。 為創建一個介面,請使用interface關鍵字,而不要用class。與類相似,我們可在interface關鍵字的前面增加一個public關鍵字(但只有介面定義於同名的一個文件內);或者將其省略,營造一種「友好的」狀態。 為了生成與一個特定的介面(或一組介面)相符的類,要使用implements(實現)關鍵字。我們要表達的意思是「介面看起來就象那個樣子,這兒是它具體的工作細節」。除這些之外,我們其他的工作都與繼承極為相似 http://hi..com/%B3%C2%C0%CB%CF%C9/blog/item/f8caaec3c21a3255b219a84c.html 這里講得更細一些

⑽ java 介面可以被抽象類實現嗎

可以的,抽象類是可以實現介面的。
介面也可以繼承介面,但不能繼承抽象類。
介面是一個特殊的抽象類,這個抽象類所有的方法都是抽象方法。抽象方法不可以實現。
一個抽象類對抽象方法可有可無,實體方法也可有可無。
抽象類可以繼承介面,可以定義介面中的方法為實體方法時就可以實現了。定義為抽象方法的話就需要子類實現,和介面類似。
希望能幫到你

閱讀全文

與java實現抽象類相關的資料

熱點內容
解壓的玩具教程可愛版 瀏覽:364
哪個求職app比較靠譜 瀏覽:886
java的讀法 瀏覽:59
nod32區域網伺服器地址 瀏覽:1000
數碼科技解壓 瀏覽:235
新網的雲伺服器管理界面復雜嗎 瀏覽:367
無人聲解壓強迫症視頻 瀏覽:571
計算機編譯運行 瀏覽:639
單片機嵌套 瀏覽:988
python字元串中符號 瀏覽:787
python正則表達式貪婪模式 瀏覽:648
愛國精神指的是什麼app 瀏覽:408
壽司解壓系列全集視頻 瀏覽:913
物體三維重建演算法 瀏覽:984
fuli直播app哪個好 瀏覽:918
租辦公室用什麼app 瀏覽:106
醫師定期考核刷題app哪個好 瀏覽:338
導出dmp文件命令 瀏覽:288
手機百度網盤怎麼解壓密碼文件 瀏覽:585
索引重新編譯 瀏覽:606