java編程abstract類(lèi)和方法詳解
抽象類(lèi)和抽象方法常用知識(shí)點(diǎn):
(1)抽象類(lèi)作為被繼承類(lèi),子類(lèi)必須實(shí)現(xiàn)抽象類(lèi)中的所有抽象方法,除非子類(lèi)也為抽象類(lèi)。
也就是說(shuō),如果子類(lèi)也為抽象類(lèi),可以不實(shí)現(xiàn)父類(lèi)中的抽象方法。但是,如果有一個(gè)非抽象類(lèi)
繼承于抽象子類(lèi),需要實(shí)現(xiàn)抽象子類(lèi),抽象子類(lèi)的抽象父類(lèi)的所有抽象方法,新帳舊賬一起算。
(2)抽象類(lèi)不能用final進(jìn)行修飾。
(3)抽象類(lèi)不能被實(shí)例化,也就是說(shuō)你用的時(shí)候不能通過(guò)new關(guān)鍵字創(chuàng)建。
(4)抽象類(lèi)中可以包含抽象方法和非抽象方法,抽象方法沒(méi)有方法體,也就是沒(méi)有具體實(shí)現(xiàn),
只是定義了有什么功能,但是非抽象方法含有方法體。
eg:
抽象父類(lèi)Person:
package com.lanhuigu.java; /** * 抽象類(lèi):不能用final修飾, * 可以包含抽象方法和非抽象方法, * 抽象方法沒(méi)有方法體,只是定義功能,沒(méi)有實(shí)現(xiàn); * 非抽象方法為正常的方法。 */ public abstract class Person { /* * abstract methods */ public abstract String eat(); public abstract String sleep(); /* * non-abstract methods */ public String sport() { return "生命在于運(yùn)動(dòng)"; } }
非抽象子類(lèi)Teacher:
package com.lanhuigu.java; /** * 繼承于抽象類(lèi)person,必須實(shí)現(xiàn)父類(lèi)中的所有抽象方法 */ public class Teacher extends Person { @Override public String eat() { // TODO Auto-generated method stub return "老師吃飯"; } @Override public String sleep() { // TODO Auto-generated method stub return "老師睡覺(jué)"; } }
非抽象子類(lèi)Student:
package com.lanhuigu.java; /** * 繼承于抽象類(lèi)person,必須實(shí)現(xiàn)父類(lèi)中的所有抽象方法 */ public class Student extends Person { @Override public String eat() { // TODO Auto-generated method stub return "學(xué)生吃飯"; } @Override public String sleep() { // TODO Auto-generated method stub return "學(xué)生睡覺(jué)"; } }
抽象子類(lèi)OthersPerson:
package com.lanhuigu.java; /** * 抽象類(lèi)繼承自抽象類(lèi),可以不用實(shí)現(xiàn)其父類(lèi)的抽象方法 */ public abstract class OthersPerson extends Person { public abstract String call(); }
非抽象子類(lèi)ExtendsOthersPerson繼承于抽象子類(lèi)OthersPerson:
package com.lanhuigu.java; /** * 必須實(shí)現(xiàn)抽象父類(lèi)OthersPerson,以及OthersPerson父類(lèi)Person中 * 的所有抽象方法,新帳舊賬一起算。 */ public class ExtendsOthersPerson extends OthersPerson { @Override public String sleep() { // TODO Auto-generated method stub return "睡覺(jué)"; } @Override public String eat() { // TODO Auto-generated method stub return "吃飯"; } @Override public String call() { // TODO Auto-generated method stub return "打電話"; } }
測(cè)試代碼:
package com.lanhuigu.java; public class TestAbstract { public static void main(String[] args) { Teacher teacher = new Teacher(); Student student = new Student(); //OthersPerson othersPerson = new OthersPerson();//報(bào)錯(cuò),抽象類(lèi)不能被實(shí)例化 System.out.println(teacher.eat()); System.out.println(teacher.sleep()); System.out.println(teacher.sport()); // 繼承父類(lèi)非抽象方法 System.out.println("=============="); System.out.println(student.eat()); System.out.println(student.sleep()); System.out.println(student.sport()); // 繼承父類(lèi)非抽象方法 } }
控制臺(tái)輸出:
老師吃飯
老師睡覺(jué)
生命在于運(yùn)動(dòng)
==============
學(xué)生吃飯
學(xué)生睡覺(jué)
生命在于運(yùn)動(dòng)
總結(jié)
以上就是本文關(guān)于java編程abstract類(lèi)和方法詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
java中staticclass靜態(tài)類(lèi)詳解
Java壓縮文件工具類(lèi)ZipUtil使用方法代碼示例
Java編程關(guān)于子類(lèi)重寫(xiě)父類(lèi)方法問(wèn)題的理解
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
OpenFeign實(shí)現(xiàn)攜帶請(qǐng)求頭方案詳細(xì)介紹
這篇文章主要介紹了OpenFeign實(shí)現(xiàn)攜帶請(qǐng)求頭方案,在通過(guò)???OpenFeign???進(jìn)行服務(wù)調(diào)用的過(guò)程中,我們需要將用戶(hù)的??user-token???、??lang??等信息放入請(qǐng)求header中。在分布式系統(tǒng)中,往往一個(gè)業(yè)務(wù)接口內(nèi)部會(huì)發(fā)生多次RPC調(diào)用2022-11-11String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析
這篇文章主要介紹了String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09詳解Spring Boot整合Mybatis實(shí)現(xiàn) Druid多數(shù)據(jù)源配置
本篇文章主要介紹了詳解Spring Boot整合Mybatis實(shí)現(xiàn) Druid多數(shù)據(jù)源配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Java面試高頻問(wèn)題之RabbitMQ系列全面解析
在介紹RabbitMQ之前實(shí)現(xiàn)要介紹一下MQ,MQ是什么?MQ全稱(chēng)是Message Queue,可以理解為消息隊(duì)列的意思,簡(jiǎn)單來(lái)說(shuō)就是消息以管道的方式進(jìn)行傳遞。RabbitMQ是一個(gè)實(shí)現(xiàn)了AMQP(Advanced Message Queuing Protocol)高級(jí)消息隊(duì)列協(xié)議的消息隊(duì)列服務(wù),用Erlang語(yǔ)言的2021-11-11@RequestBody 部分屬性沒(méi)有轉(zhuǎn)化成功的處理
這篇文章主要介紹了@RequestBody 部分屬性沒(méi)有轉(zhuǎn)化成功的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10