java編程abstract類和方法詳解
抽象類和抽象方法常用知識點(diǎn):
(1)抽象類作為被繼承類,子類必須實(shí)現(xiàn)抽象類中的所有抽象方法,除非子類也為抽象類。
也就是說,如果子類也為抽象類,可以不實(shí)現(xiàn)父類中的抽象方法。但是,如果有一個非抽象類
繼承于抽象子類,需要實(shí)現(xiàn)抽象子類,抽象子類的抽象父類的所有抽象方法,新帳舊賬一起算。
(2)抽象類不能用final進(jìn)行修飾。
(3)抽象類不能被實(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)動";
}
}
非抽象子類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();//報錯,抽象類不能被實(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());
// 繼承父類非抽象方法
}
}
控制臺輸出:
老師吃飯
老師睡覺
生命在于運(yùn)動
==============
學(xué)生吃飯
學(xué)生睡覺
生命在于運(yùn)動
總結(jié)
以上就是本文關(guān)于java編程abstract類和方法詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
springBoot整合rabbitmq測試常用模型小結(jié)
這篇文章主要介紹了springBoot整合rabbitmq并測試五種常用模型,本文主要針對前五種常用模型,在spirngboot框架的基礎(chǔ)上整合rabbitmq并進(jìn)行測試使用,需要的朋友可以參考下2022-01-01
Spring指定bean在哪個應(yīng)用加載(示例詳解)
本文通過實(shí)例代碼介紹了Spring指定bean在哪個應(yīng)用加載,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-08-08
Java在Map轉(zhuǎn)Json字符串時出現(xiàn)"\"轉(zhuǎn)義字符的解決辦法
當(dāng)一個Map被轉(zhuǎn)成Json字符串后,被添加到另一個Map中,會出現(xiàn)被加上“\”轉(zhuǎn)義字符的情況,這個時候該如何解決呢,下面就來和小編一起了解一下2023-07-07
使用sharding-jdbc實(shí)現(xiàn)水平分表的示例代碼
本文主要介紹了sharding-jdbc實(shí)現(xiàn)水平分表,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
Springboot整合Rabbitmq之Confirm和Return機(jī)制
這篇文章主要介紹了Springboot整合Rabbitmq之Confirm和Return詳解,本篇重點(diǎn)進(jìn)行Confirm?機(jī)制和Return?機(jī)制的實(shí)現(xiàn)和說明,通過實(shí)例代碼相結(jié)合給大家詳細(xì)介紹,對Springboot整合Rabbitmq相關(guān)知識感興趣的朋友一起看看吧2022-02-02
Java 線程池ExecutorService詳解及實(shí)例代碼
這篇文章主要介紹了Java 線程池ExecutorService詳解及實(shí)例代碼的相關(guān)資料,線程池減少在創(chuàng)建和銷毀線程上所花的時間以及系統(tǒng)資源的開銷.如果不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量線程而導(dǎo)致消耗系統(tǒng)內(nèi)存以及”過度切換“2016-11-11
Java Spring Boot實(shí)戰(zhàn)練習(xí)之單元測試篇
單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據(jù)實(shí)際情況去判定其具體含義,如C語言中單元指一個函數(shù),Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等2021-10-10
SpringBoot整合RabbitMQ的5種模式的注解綁定詳解
這篇文章主要介紹了SpringBoot整合RabbitMQ的5種模式的注解綁定詳解,RabbitMQ 是一個消息中間件,它接收消息并且轉(zhuǎn)發(fā),是"消費(fèi)-生產(chǎn)者模型"的一個典型的代表,一端往消息隊列中不斷的寫入消息,而另一端則可以讀取或者訂閱隊列中的消息,需要的朋友可以參考下2024-01-01

