Java抽象方法是一種沒(méi)有實(shí)現(xiàn)體的方法,用abstract關(guān)鍵字修飾。抽象方法必須定義在抽象類中,抽象類可以擁有抽象方法和非抽象方法。抽象方法必須被子類實(shí)現(xiàn),否則子類也必須定義為抽象類。抽象方法的作用是為了讓子類實(shí)現(xiàn)多態(tài),讓子類在繼承父類時(shí),擁有重寫抽象方法的能力。
非抽象類為什么能夠擁有抽象方法
現(xiàn)在明確了什么是Java抽象方法,再來(lái)看一下非抽象類為什么能夠擁有抽象方法。其實(shí)這個(gè)問(wèn)題很好解決,因?yàn)榉浅橄箢愔械某橄蠓椒ū仨氃谧宇愔斜粚?shí)現(xiàn),否則子類也必須定義為抽象類。所以非抽象類擁有抽象方法是為了約束子類必須實(shí)現(xiàn)該方法,實(shí)現(xiàn)了代碼重用,增強(qiáng)了代碼的可維護(hù)性。
使用非抽象類定義抽象方法的注意事項(xiàng)
雖然非抽象類定義抽象方法有一定的好處,但是我們也需要注意一些事項(xiàng)。首先,在非抽象類中定義抽象方法必須是public或protected修飾的,這樣才能保證子類能夠重寫該方法;其次,如果一個(gè)類中有抽象方法,它必須被定義為抽象類;最后,非抽象類定義抽象方法時(shí),不能直接實(shí)例化該類,需要通過(guò)其子類來(lái)實(shí)例化。如果我們不注意這些問(wèn)題,就會(huì)造成代碼的混亂和運(yùn)行時(shí)的異常。