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 "打電話";
}
}
測試代碼:
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ù)參閱本站:
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
OpenFeign實(shí)現(xiàn)攜帶請(qǐng)求頭方案詳細(xì)介紹
這篇文章主要介紹了OpenFeign實(shí)現(xiàn)攜帶請(qǐng)求頭方案,在通過???OpenFeign???進(jìn)行服務(wù)調(diào)用的過程中,我們需要將用戶的??user-token???、??lang??等信息放入請(qǐng)求header中。在分布式系統(tǒng)中,往往一個(gè)業(yè)務(wù)接口內(nèi)部會(huì)發(fā)生多次RPC調(diào)用2022-11-11
String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析
這篇文章主要介紹了String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(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-03
@RequestBody 部分屬性沒有轉(zhuǎn)化成功的處理
這篇文章主要介紹了@RequestBody 部分屬性沒有轉(zhuǎn)化成功的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

