java編程abstract類和方法詳解
抽象類和抽象方法常用知識(shí)點(diǎn):
(1)抽象類作為被繼承類,子類必須實(shí)現(xiàn)抽象類中的所有抽象方法,除非子類也為抽象類。
也就是說,如果子類也為抽象類,可以不實(shí)現(xiàn)父類中的抽象方法。但是,如果有一個(gè)非抽象類
繼承于抽象子類,需要實(shí)現(xiàn)抽象子類,抽象子類的抽象父類的所有抽象方法,新帳舊賬一起算。
(2)抽象類不能用final進(jìn)行修飾。
(3)抽象類不能被實(shí)例化,也就是說你用的時(shí)候不能通過new關(guān)鍵字創(chuàng)建。
(4)抽象類中可以包含抽象方法和非抽象方法,抽象方法沒有方法體,也就是沒有具體實(shí)現(xiàn),
只是定義了有什么功能,但是非抽象方法含有方法體。
eg:
抽象父類Person:
package com.lanhuigu.java; /** * 抽象類:不能用final修飾, * 可以包含抽象方法和非抽象方法, * 抽象方法沒有方法體,只是定義功能,沒有實(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)"; } }
非抽象子類Teacher:
package com.lanhuigu.java; /** * 繼承于抽象類person,必須實(shí)現(xiàn)父類中的所有抽象方法 */ 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 "老師睡覺"; } }
非抽象子類Student:
package com.lanhuigu.java; /** * 繼承于抽象類person,必須實(shí)現(xiàn)父類中的所有抽象方法 */ 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é)生睡覺"; } }
抽象子類OthersPerson:
package com.lanhuigu.java; /** * 抽象類繼承自抽象類,可以不用實(shí)現(xiàn)其父類的抽象方法 */ public abstract class OthersPerson extends Person { public abstract String call(); }
非抽象子類ExtendsOthersPerson繼承于抽象子類OthersPerson:
package com.lanhuigu.java; /** * 必須實(shí)現(xiàn)抽象父類OthersPerson,以及OthersPerson父類Person中 * 的所有抽象方法,新帳舊賬一起算。 */ public class ExtendsOthersPerson extends OthersPerson { @Override public String sleep() { // TODO Auto-generated method stub return "睡覺"; } @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ò),抽象類不能被實(shí)例化 System.out.println(teacher.eat()); System.out.println(teacher.sleep()); System.out.println(teacher.sport()); // 繼承父類非抽象方法 System.out.println("=============="); System.out.println(student.eat()); System.out.println(student.sleep()); System.out.println(student.sport()); // 繼承父類非抽象方法 } }
控制臺(tái)輸出:
老師吃飯
老師睡覺
生命在于運(yùn)動(dòng)
==============
學(xué)生吃飯
學(xué)生睡覺
生命在于運(yùn)動(dòng)
總結(jié)
以上就是本文關(guān)于java編程abstract類和方法詳解的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
java中staticclass靜態(tài)類詳解
Java壓縮文件工具類ZipUtil使用方法代碼示例
Java編程關(guān)于子類重寫父類方法問題的理解
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
上一篇:java編程之xpath介紹
欄 目:Java編程
下一篇:java編程實(shí)現(xiàn)求質(zhì)數(shù)與因式分解代碼分享
本文標(biāo)題:java編程abstract類和方法詳解
本文地址:http://mengdiqiu.com.cn/a1/Javabiancheng/8371.html
您可能感興趣的文章
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10Java Socket編程(三) 服務(wù)器Sockets
- 01-10Java進(jìn)階:Struts多模塊的技巧
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)
- 01-10Java經(jīng)驗(yàn)點(diǎn)滴:處理沒有被捕獲的異常
- 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)器
- 01-10Java中的浮點(diǎn)數(shù)分析
- 01-10面向?qū)ο缶幊?Java中的抽象數(shù)據(jù)類型


閱讀排行
本欄相關(guān)
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)
- 01-10Java Socket編程(三) 服務(wù)器Sockets
- 01-10Java進(jìn)階:Struts多模塊的技巧
- 01-10J2SE 1.5版本的新特性一覽
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java Socket編程(四) 重復(fù)和并發(fā)服務(wù)
- 01-10Java經(jīng)驗(yàn)點(diǎn)滴:處理沒有被捕獲的異常
隨機(jī)閱讀
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改