Java中抽象類與方法的重寫方式
1. 抽象類
- 關(guān)鍵字:abstract
類:用來描述一類具體的事物
抽象類:抽象的、模糊的、不具體的類
- 在Java的普通類中是不允許多繼承的,原因是會(huì)出現(xiàn)調(diào)用
- 不明確的問題;
總結(jié):父類中的功能是不能刪除的,但其形式是不需要的(沒有存在的意義),此時(shí)就可以將父類中功能的 具體實(shí)現(xiàn) 形式 給刪掉;
類的具體實(shí)現(xiàn):創(chuàng)建對(duì)象
抽象方法存在的意義是什么?
- 用于定義功能,明確該類具備此功能-----規(guī)則
特點(diǎn):
- 1.抽象類可以有抽象方法,也可以有非抽象的方法
- 2.抽象類中可以有構(gòu)造器,但是不能創(chuàng)建對(duì)象,空間需要由子類對(duì)象來開辟
2. 方法的重寫
方法重載:在同一個(gè)類中,方法名相同,參數(shù)列表不同(參數(shù)位置、參數(shù)個(gè)數(shù)、參數(shù)類型),與返回值無關(guān)
方法重寫:在繼承或?qū)崿F(xiàn)的關(guān)系下,方法名相同,參數(shù)列表相同,返回值類型相同,子類的修飾權(quán)限要大于或等于父類中的修飾符權(quán)限
1. 什么情況下需要重寫父類中的類型呢?
1.1 子類有自己的特殊實(shí)現(xiàn)形式時(shí),此時(shí)就可以重寫父類中的功能
- 如果沒有特殊實(shí)現(xiàn)就不需要重寫(此時(shí)重寫不是必須的)
2.1 所有的子類都有自己的特殊實(shí)現(xiàn)形式時(shí),父類中的功能也就沒
- 必要有具體的實(shí)現(xiàn),就會(huì)變成抽象,那此時(shí),其所有的子類都
- 必須重寫父類中全部的抽象方法
2. @Override 稱為注解
此處的含義是重寫,如果方法上加上了該注解,就代表該方法是從父類中重寫過來的(如果此時(shí)刪除了父類中的該方法,子類就會(huì)報(bào)錯(cuò))
// 調(diào)用
public class Demo {
?? ?public static void main(String[] args) {
?? ??? ?
?? ?}
}package day0202;
// 爺爺類(抽象類)
public abstract class Old {
?? ?private String type;
?? ?private String name;
?? ?private String color;
?? ?private int age;
?? ?
?? ?public abstract void eat();
?? ?public abstract void sleep();
?? ?public abstract void weight();
?? ?
?? ?
?? ?public void ear() {
?? ??? ?System.out.println("圓圓的");
?? ?}
?? ?public void tail() {
?? ??? ?System.out.println("尾部是卷的");
?? ?}
?? ?
?? ?
?? ?public String getType() {
?? ??? ?return type;
?? ?}
?? ?public void setType(String type) {
?? ??? ?this.type = type;
?? ?}
?? ?public String getName() {
?? ??? ?return name;
?? ?}
?? ?public void setName(String name) {
?? ??? ?this.name = name;
?? ?}
?? ?public String getColor() {
?? ??? ?return color;
?? ?}
?? ?public void setColor(String color) {
?? ??? ?this.color = color;
?? ?}
?? ?public int getAge() {
?? ??? ?return age;
?? ?}
?? ?public void setAge(int age) {
?? ??? ?this.age = age;
?? ?}
?? ?
}package ****;
// 父類繼承爺爺類
?? ?public class Parent1 extends Old {
?? ??? ?
?? ??? ?private String eyes;
?? ??? ?
?? ??? ?
?? ??? ?@Override
?? ??? ?public void eat() {
?? ??? ??? ?super.ear();
?? ??? ??? ?super.tail();
?? ??? ??? ?System.out.println("吃肉,通過哺乳其他動(dòng)物");
?? ??? ?}
?? ??? ?
?? ??? ?@Override
?? ??? ?public void sleep() {
?? ??? ??? ?System.out.println("困了就睡覺");
?? ??? ?}
?? ??? ?
?? ??? ?@Override
?? ??? ?public void weight() {
?? ??? ??? ?System.out.println("比較大");
?? ??? ?}
?? ?}當(dāng)在繼承關(guān)系中,子父類中有相同的方法或變量時(shí),程序的編譯執(zhí)行有什么區(qū)別
- 非靜態(tài)的方法:執(zhí)行的時(shí)候走的是子類中覆蓋后的方法
- 非靜態(tài)的變量:執(zhí)行的時(shí)候走的是子類中的變量
靜態(tài)的方法:執(zhí)行的是調(diào)用者中的方法
靜態(tài)的屬性:執(zhí)行的是調(diào)用者中的方法
抽象方法不能與哪些關(guān)鍵字共存?
private:private修飾的方法只能在本類中使用,而抽象方法要求必須讓子類實(shí)現(xiàn),兩者相互矛盾final:final修飾的方法不能被重寫,而抽象方法必須要被重寫,static:static修飾的方法可以通過類名直接調(diào)用,而抽象方法是沒有方法體的
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
玩轉(zhuǎn)spring boot 結(jié)合AngularJs和JDBC(4)
玩轉(zhuǎn)spring boot,這篇文章主要介紹了結(jié)合AngularJs和JDBC,玩轉(zhuǎn)spring boot,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Java Web學(xué)習(xí)之Cookie和Session的深入理解
這篇文章主要給大家介紹了關(guān)于Java Web學(xué)習(xí)之Cookie和Session的相關(guān)資料,需要的朋友可以參考下2018-04-04
java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備
這篇文章主要介紹了java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備!具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
springcloud gateway如何配置動(dòng)態(tài)路由
本文主要介紹了在SpringCloudGateway中配置動(dòng)態(tài)路由的步驟,包括引入依賴、配置路由源、添加配置中心依賴、配置配置中心、定義路由規(guī)則和刷新配置等內(nèi)容,使路由規(guī)則在配置中心更新時(shí),無需重啟網(wǎng)關(guān)服務(wù)即可動(dòng)態(tài)應(yīng)用新的路由規(guī)則2024-10-10
Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn)
這篇文章主要介紹了Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Java?web訪問http://localhost:8080/xx/xx.jsp報(bào)404錯(cuò)誤問題的解決方法
這篇文章主要給大家介紹了關(guān)于Java?web訪問http://localhost:8080/xx/xx.jsp報(bào)404錯(cuò)誤問題的解決方法,很多小伙伴在剛開始用Springboot整合jsp開發(fā)時(shí)都會(huì)遇到這個(gè)問題, 按照別人的教程一步一步搭建,但就是會(huì)報(bào)404,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Maven依賴中scope的runtime和provied的區(qū)別及說明
這篇文章主要介紹了Maven依賴中scope的runtime和provied的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
深入理解Java責(zé)任鏈模式實(shí)現(xiàn)靈活的請(qǐng)求處理流程
javax.validation.constraints注解使用

