国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java之繼承和多態(tài)

這篇具有很好參考價值的文章主要介紹了Java之繼承和多態(tài)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

繼承

一 、繼承相關(guān)基礎(chǔ)

1.?為什么需要繼承

先看下代碼

// Dog.java
public class Dog {
string name ;
int age ;
float weight ;
public void eat (){
System . out . println ( name + " 正在吃飯 " );
}
public void sleep (){
System . out . println ( name + " 正在睡覺 " );
}
void Bark (){
System . out . println ( name + " 汪汪汪 ~~~" );
}
}
// Cat.Java
public class Cat {
string name ;
int age ;
float weight ;
public void eat (){
System . out . println ( name + " 正在吃飯 " );
}
public void sleep ()
{
System . out . println ( name + " 正在睡覺 " );
}
void mew (){
System . out . println ( name + " 喵喵喵 ~~~" );
}
}
以上代碼中 通過觀察上述代碼會發(fā)現(xiàn),貓和狗的類中存在大量重復(fù),那能否將這些共性抽取呢?面向?qū)ο笏枷胫刑岢隽死^承的概念,專門用來進行共性抽取,實現(xiàn)代碼復(fù)用。

2.繼承概念

繼承 (inheritance) 機制 :是面向?qū)ο蟪绦蛟O(shè)計使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進行擴展,增加新功能 ,這樣產(chǎn)生新的類,稱 派生類 。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計的層次結(jié)構(gòu), 體現(xiàn)了 由簡單到復(fù)雜的認知過程。繼承主要解決的問題是:共性的抽取,實現(xiàn)代碼復(fù)用(即通用代碼重復(fù)使用) 。
例如:狗和貓都是動物,那么我們就可以將共性的內(nèi)容進行抽取,然后采用繼承的思想達到共用。
上述代碼中, Dog Cat 都繼承了 Animal 類,其中: Animal 類稱為父類 / 基類或超類, Dog Cat 可以稱為 Animal 的 子類/ 派生類,繼承之后,子類可以復(fù)用父類中成員,子類在實現(xiàn)時只需關(guān)心自己新增加的成員即可。
從繼承概念中可以看出繼承最大的作用就是:實現(xiàn)代碼復(fù)用,還有就是來實現(xiàn)多態(tài) ( 后面講)。

3.?繼承的語法

Java 中如果要表示類之間的繼承關(guān)系,需要借助 extends 關(guān)鍵字
修飾符 class 子類 extends 父類 {
// ...
}
// Animal.java
public class Animal {
String name ;
int age ;
public void eat (){
System . out . println ( name + " 正在吃飯 " );
}
public void sleep (){
System . out . println ( name + " 正在睡覺 " );
}
}
// Dog.java
public class Dog extends Animal {
void bark (){
System . out . println ( name + " 汪汪汪 ~~~" );
}
}
// Cat.Java
public class Cat extends Animal {
void mew (){
System . out . println ( name + " 喵喵喵 ~~~" );
}
}

4.?父類成員訪問

在繼承體系中,子類將父類中的方法和字段繼承下來了,那在子類中能否直接訪問父類中繼承下來的成員呢?

4.1 子類中訪問父類的成員變量
public class Base {
int a ;
int b ;
}
public class Derived extends Base {
int c ;
public void method (){
a = 10 ; // 訪問從父類中繼承下來的 a
b = 20 ; // 訪問從父類中繼承下來的 b
c = 30 ; // 訪問子類自己的 c
}
}
4.2子類和父類成員變量同名
?class Base {
int a ;
char? b ;
int c ;
}
public class Derived extends Base {
int a ; // 與父類中成員 a 同名,且類型相同
int? ? b ; // 與父類中成員 b 同名,但類型不同
public void method (){
a = 100 ; // 訪問父類繼承的 a ,還是子類自己新增的 a
b='e';? ? ? //char類型只有父類中有,故訪問父類的b
c = 102 ; // 子類沒有 c ,訪問的肯定是從父類繼承下來的 c
// d = 103; // 編譯失敗,因為父類和子類都沒有定義成員變量 b
}
}
在子類方法中 或者 通過子類對象訪問成員時
先根據(jù)類型判斷訪問誰的變量。
如果訪問的成員變量子類中有,優(yōu)先訪問自己的成員變量。
如果訪問的成員變量子類中無,則訪問父類繼承下來的,如果父類也沒有定義,則編譯報錯。
如果訪問的成員變量與父類中成員變量同名,則優(yōu)先訪問自己的。
成員變量訪問遵循就近原則,自己有優(yōu)先自己的,如果沒有則向父類中找
4.3?子類中訪問父類的成員方法

同變量一樣,只是當父類與子類發(fā)生方法重寫(參數(shù)也一樣)時訪問子類,發(fā)生方法重載時根據(jù)參數(shù)判斷訪問誰。當父類與子類都沒有該方法時,編譯器報錯。

二、super關(guān)鍵字

1.為什么要使用super關(guān)鍵字

如果子類中存在與父類中相同名字的成員時,這是該怎么辦呢?使用 super 在子類中訪問父類的變量和方法。

class Base {

int a;

int b;

public void methodB(){

System.out.println("Base中的methodB()");

}

}

public class Derived extends Base{

int a;

int b;

public void methodB() {

super.a = 200;

super.b = 201;

System.out.println("Derived中的methodB()方法");

System.out.println(a);

System.out.println(b); //子類的b

System.out.println(super.a);

System.out.println(super.b); //調(diào)用父類的b要用super

super.methodB(); //調(diào)用父類的方法要寫super?

methodB();這里調(diào)用自己,形成死遞歸

}

}

class c {

public static void main(String[] args) {

Derived s=new Derived();

s.a=2;

s.b=5;

s.methodB();

}

}

屏幕輸出結(jié)果

Derived中的methodB()方法
2
5
200
201
Base中的methodB()

以上代碼我們發(fā)現(xiàn)一個問題,為什么不直接將主方法寫在methodB這個類里面呢,這樣因為父子的關(guān)系可以直接引用變量及方法,不用去實例化對象了。見以下代碼

class Base {
int a;
int b;
public void methodB(){
System.out.println("Base中的methodB()");
}
}
public class Derived extends Base{
int a;
int b;
public void methodB() {
public static void main(String[] args) {
super.a = 200;
super.b = 201;
a=2;
b=5;
System.out.println("Derived中的methodB()方法");
System.out.println(a);
System.out.println(b); //子類的b
System.out.println(super.a);
System.out.println(super.b); //調(diào)用父類的b要用super
super.methodB(); //調(diào)用父類的方法要寫super?
methodB();這里調(diào)用自己,形成死遞歸
}
}

這個代碼編譯器會報錯

這是因為super是不能用在靜態(tài)代碼塊中( 因為子類繼承到父類的東西也屬于對象),而 super可以看成父類的對象名 (與this看成對象名一樣),正好main方法是一個靜態(tài)方法,故只能間接訪問。
總結(jié):
1.在子類方法中,如果想要明確訪問父類中成員時,借助super關(guān)鍵字即可 。
2.super只能在非靜態(tài)方法中使用(因為子類繼承到父類的東西也屬于對象)
super 的其他用法在后文中介紹。

2.子類構(gòu)造方法

父子父子,先有父再有子,即:子類對象構(gòu)造時,需要先調(diào)用基類構(gòu)造方法,然后執(zhí)行子類的構(gòu)造方法。

public class Base {
public Base (){
System . out . println ( "Base()" );
}
}
public class Derived extends Base {
public Derived (){
// super(); // 注意子類構(gòu)造方法中默認會調(diào)用基類的無參構(gòu)造方法: super(),
// 用戶沒有寫時 , 編譯器會自動添加,而且 super() 必須是子類構(gòu)造方法中第一條語句(類比this在構(gòu)造方法的作用)
System . out . println ( "Derived()" );
}
}
public class Test {
public static void main ( String [] args ) {
Derived d = new Derived ();
}
}
結(jié)果打?。?
Base ()
Derived ()
從以上代碼可以看出:先執(zhí)行基類的構(gòu)造方法,然后執(zhí)行子類的構(gòu)造方
注意:
1. 若父類顯式定義無參的構(gòu)造方法,在子類構(gòu)造方法第一行默認有隱含的 super() 調(diào)用,即調(diào)用基類構(gòu)造方法
2. 如果父類構(gòu)造方法是帶有參數(shù)的,此時需要用戶為子類顯式定義構(gòu)造方法,并在子類構(gòu)造方法中選擇合適的父類構(gòu)造方法調(diào)用(參數(shù)要一致),否則編譯失敗。
3. 在子類構(gòu)造方法中, super(...) 調(diào)用父類構(gòu)造時,必須是子類構(gòu)造函數(shù)中第一條語句
4. super(...) 只能在子類構(gòu)造方法中出現(xiàn)一次,并且不能和 this 同時出現(xiàn)(因為都要第一條)

3.superthis的對比

super this 都可以在成員方法中用來訪問:成員變量和調(diào)用其他的成員函數(shù),都可以作為構(gòu)造方法的第一條語句,那他們之間有什么區(qū)別呢?
相同點
1. 都是 Java 中的關(guān)鍵字
2. 只能在類的非靜態(tài)方法中使用,用來訪問非靜態(tài)成員方法和字段
3. 在構(gòu)造方法中調(diào)用時,必須是構(gòu)造方法中的第一條語句,并且不能同時存在
不同點
1. this 是當前對象的引用, super是父類對象的引用。this(...) 用于調(diào)用本類構(gòu)造方法, super(...) 用于調(diào)用父類構(gòu)造方法,兩種調(diào)用不能同時在構(gòu)造方法中使用。
class Base {
int a;
public Base(){
System.out.println("Base()");
}
}
public class Derived extends Base{
int a;
public Derived(){
System.out.println("Derived()");
}
this.a=1;? //看成Derived.a=1
super.a=2;? //看成Base.a=2
this();? ?//調(diào)用子類構(gòu)造方法看成Derived()
super()? //調(diào)用父類構(gòu)造方法看成Base()
}
//該代碼沒有主方法,不能運行,只是為了演示方便。
2. 構(gòu)造方法中一定會存在 super(...) 的調(diào)用,用戶 沒有寫編譯器也會增加 ,但是 this(...) 用戶不寫則沒有。

4.?再談初始化

我們還記得之前講過的代碼塊嗎?我們簡單回顧一下幾個重要的代碼塊:實例代碼塊和靜態(tài)代碼塊。在沒有繼承關(guān)系時的執(zhí)行順序。
1. 靜態(tài)代碼塊先執(zhí)行,并且只執(zhí)行一次,在類加載階段執(zhí)行
2. 當有對象創(chuàng)建時,才會執(zhí)行實例代碼塊,實例代碼塊執(zhí)行完成后,最后構(gòu)造方法執(zhí)行
那么問題來了, 繼承關(guān)系上的執(zhí)行順序是怎樣的呢?看下面代碼
class Person {
public String name ;
public int age ;
public Person ( String name , int age ) {
this . name = name ;
this . age = age ;
System . out . println ( "Person :構(gòu)造方法執(zhí)行 " );
}
{
System . out . println ( "Person :實例代碼塊執(zhí)行 " );
}
static {
System . out . println ( "Person :靜態(tài)代碼塊執(zhí)行 " );
}
}
class Student extends Person {
public Student ( String name , int age ) {
super ( name , age );
System . out . println ( "Student :構(gòu)造方法執(zhí)行 " );
}
{
System . out . println ( "Student :實例代碼塊執(zhí)行 " );
}
static {
System . out . println ( "Student :靜態(tài)代碼塊執(zhí)行 " );
}
}
public class TestDemo4 {
public static void main ( String [] args ) {
Student student1 = new Student ( " 張三 " , 19 );
System . out . println ( "===========================" );
Student student2 = new Student ( "gaobo" , 20 );
}
public static void main1 ( String [] args ) {
Person person1 = new Person ( "bit" , 10 );
System . out . println ( "============================" );
Person person2 = new Person ( "gaobo" , 20 );
}
//執(zhí)行結(jié)果
Person :靜態(tài)代碼塊執(zhí)行
Student :靜態(tài)代碼塊執(zhí)行
Person :實例代碼塊執(zhí)行
Person :構(gòu)造方法執(zhí)行
Student :實例代碼塊執(zhí)行
Student :構(gòu)造方法執(zhí)行
===========================
Person :實例代碼塊執(zhí)行
Person :構(gòu)造方法執(zhí)行
Student :實例代碼塊執(zhí)行
Student :構(gòu)造方法執(zhí)行
通過分析執(zhí)行結(jié)果,得出以下結(jié)論:
1 、父類靜態(tài)代碼塊優(yōu)先于子類靜態(tài)代碼塊執(zhí)行,且是最早執(zhí)行
2 、父類實例代碼塊和父類構(gòu)造方法緊接著執(zhí)行
3 、子類的實例代碼塊和子類構(gòu)造方法緊接著再執(zhí)行
4 、第二次實例化子類對象時,父類和子類的靜態(tài)代碼塊都將不會再執(zhí)行
如果涉及了變量初始化怎么辦呢?

首先說下類的加載(在生成class文件創(chuàng)建類時就執(zhí)行了)會導(dǎo)致靜態(tài)成員變量先初始化(父類的靜態(tài)變量先初始化,子類的靜態(tài)變量后初始化),而后是靜態(tài)代碼塊初始化(父類的靜態(tài)代碼塊先執(zhí)行,子類的靜態(tài)代碼塊再執(zhí)行),因為類的加載只有一次,所以它們只能執(zhí)行一次。然后就按上面的順序。

三、protected關(guān)鍵字

在類和對象章節(jié)中,為了實現(xiàn)封裝特性, Java 中引入了訪問限定符,主要限定:類或者類中成員能否在類外或者其他包中被訪問。
Java之繼承和多態(tài),java,python,前端
如果有時我們想要一個變量能在一個包之外去使用,但又不會像public范圍那么大,這時就出現(xiàn)了protected這個修飾符。 允許變量還能在另一個包的所屬子類中去使用。
我們先看在同一個包的情況(同一個包的情況下基本不會報錯)

public class Date3 {

????protected int a=30;

}

class Date2 extends Date3{

????public void a(){

????????System.out.println(super.a);

????????System.out.println(a);

//以下的部分復(fù)雜化了,在繼承關(guān)系中我們可以直接使用a,這里運行沒有問題

Date3 date3 = new Date3();

????????System.out.println(date3.a);

????}

????public static void main(String[] args) {

????????Date2 date2 ?=new Date2();

????????Date3 date3 ?=new Date3();

????????System.out.println(date2.a);

????????System.out.println(date3.a);

????????date2.a();

????}

}

我們看下不同包的情況

package cot;

public class Date1 {

????protected int a=30;

}

package com;

import cot.Date1;

class Date2 extends Date1 {

????public void a(){

????????System.out.println(super.a);

????????System.out.println(a);

//以下代碼會報錯

Date3 date3 = new Date3();

????????System.out.println(date3.a);

????}

????public static void main(String[] args) {

????????Date2 date2 ?=new Date2();

????????Date1 date1 ?=new Date1();

????????System.out.println(date2.a);

? ? ? ?System.out.println(date1.a); //這里會報錯:a 在 cot.Date1 中是 protected 訪問控制

? ? ? ?date2.a();

????}

}

觀察上面的代碼,下面這個報錯可以理解,因為他不是子類,protected要求在不同包的子類中可以訪問,但是上面的報錯它明明在子類中啊, 這里記?。簆rotected修飾的變量或方法在不同包子類中只能通過super訪問,而super不能出現(xiàn)在主方法中,所以只能通過方法間接訪問。

package cot;

public class Date1 {

????protected int a=30;

}

package com;

import cot.Date1;

class Date2 extends Date1 {

????public void a(){

????????System.out.println(super.a);

????}

????public static void main(String[] args) {

????????Date2 date2 ?=new Date2();

???????// Date1 date1 ?=new Date1();

???????// System.out.println(date2.a);

????????//System.out.println(date1.a);

????????date2.a();

????}

}

//輸出結(jié)果:30

注意:父類中private成員變量雖然在子類中不能直接訪問,但是也繼承到子類中去了。?

四、final關(guān)鍵字

final 關(guān)鍵可以用來修飾變量、成員方法以及類。
1. 修飾變量或字段,表示常量 ( 即不能修改 )
final int a = 10 ;
a = 20 ; // 編譯出錯
2.修飾類:表示此類不能被繼承
final public class Animal {
...
}
public class Bird extends Animal {
...
}
// 編譯出錯
Error :( 3 , 27 ) java : 無法從最終 com . bit . Animal 進行繼
3. 修飾方法:表示該方法不能被重寫(后面介紹)

五、繼承與組合

和繼承類似 , 組合也是一種表達類之間關(guān)系的方式 , 也是能夠達到代碼重用的效果。組合并沒有涉及到特殊的語法(諸如 extends 這樣的關(guān)鍵字 ), 僅僅是將一個類的實例作為另外一個類的字段。
繼承表示對象之間是 is-a(是a) 的關(guān)系 ,比如:狗是動物,貓是動物
組合表示對象之間是 has-a(有a)的關(guān)系,比如:汽車有輪胎、發(fā)動機、方向盤、車載系統(tǒng)等
汽車和其輪胎、發(fā)動機、方向盤、車載系統(tǒng)等的關(guān)系就應(yīng)該是組合,因為汽車是有這些部件組成的。
// 輪胎類
class Tire {
// ...
}
// 發(fā)動機類
class Engine {
// ...
}
// 車載系統(tǒng)類
class VehicleSystem {
// ...
}
class Car {
private Tire tire ; // 可以復(fù)用輪胎中的屬性和方法
private Engine engine ; // 可以復(fù)用發(fā)動機中的屬性和方法
private VehicleSystem vs ; // 可以復(fù)用車載系統(tǒng)中的屬性和方法
// ...
}
// 奔馳是汽車
class Benz extend Car {
// 將汽車中包含的:輪胎、發(fā)送機、車載系統(tǒng)全部繼承下來
}
組合和繼承都可以實現(xiàn)代碼復(fù)用,應(yīng)該使用繼承還是組合,需要根據(jù)應(yīng)用場景來選擇,一般建議: 能用組合盡量用組合。

多態(tài)

待更新文章來源地址http://www.zghlxwxcb.cn/news/detail-856347.html

到了這里,關(guān)于Java之繼承和多態(tài)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java 封裝 繼承 多態(tài)(深入理解)

    Java 封裝 繼承 多態(tài)(深入理解)

    登神長階 第二階 封裝 繼承 多態(tài) ???????????????????????????????????????????? 目錄 ??一.面向?qū)ο缶幊痰娜筇匦???二.封裝 ??1.定義及其作用 ???2.訪問限定符 ??3.封裝擴展 包(package) ??3.1.定義及其作用 ??? 3.2.導(dǎo)入包的類 ??3.3.自定義包 ??

    2024年03月11日
    瀏覽(25)
  • 【Java初階(六)上】封裝 繼承 多態(tài)

    【Java初階(六)上】封裝 繼承 多態(tài)

    ?博主主頁: 33的博客? ?文章專欄分類: Java從入門到精通? ??我的代碼倉庫: 33的代碼倉庫?? 對于面向?qū)ο蟪绦蛉筇匦裕悍庋b、繼承、多態(tài)。這篇文章將會詳細講解到如何實現(xiàn)封裝、繼承、多態(tài),以及具體的應(yīng)用。 本章重點 掌握封裝的概念,如何實現(xiàn)封裝,包的概念,繼

    2024年04月09日
    瀏覽(25)
  • Java面向?qū)ο?- 封裝、繼承和多態(tài)

    目錄 第1關(guān):什么是封裝,如何使用封裝 第2關(guān):什么是繼承,怎樣使用繼承 第3關(guān):super的使用 第4關(guān):方法的重寫與重載 第5關(guān):抽象類 第6關(guān):final的理解與使用 第7關(guān):接口 第8關(guān):什么是多態(tài),怎么使用多態(tài) Java_Educoder

    2024年02月07日
    瀏覽(22)
  • Java系列——封裝、繼承、多態(tài)初了解

    Java系列——封裝、繼承、多態(tài)初了解

    目錄 一、前言 二、封裝 1.什么是封裝??? 2.封裝的特點 3.封裝的使用 三、繼承 1.什么是繼承? 2.繼承的特點 3.繼承的優(yōu)點 4.繼承的使用? 4.1 繼承的格式 ?4.2 繼承的演示 4.3 成員變量 4.4 成員方法 4.5 構(gòu)造方法 五、多態(tài) 1.什么是多態(tài)? 2.多態(tài)的特點 3.多態(tài)的使用? 4.引用類型

    2024年02月08日
    瀏覽(28)
  • 【Java SE】如何解讀Java的繼承和多態(tài)的特性?

    【Java SE】如何解讀Java的繼承和多態(tài)的特性?

    什么是繼承和多態(tài),為什么被稱為Java三大特性,這兩大特性為我們程序員帶來了什么影響呢?是讓復(fù)雜的代碼簡化了,還是為程序員寫代碼提供了多樣性呢?那讓我們一起來揭開這層神秘的面紗吧! 1.1為什么需要繼承 Java中使用類對現(xiàn)實世界中實體來進行描述,類經(jīng)過實例化

    2024年02月05日
    瀏覽(27)
  • java基礎(chǔ)語法-package構(gòu)造方法-繼承-多態(tài)

    java中的包 - package 包的主要功能: 包的基本語法 在一個文件中,可以沒有包,或者一個包。但是不能出現(xiàn)兩個包。 包名一般小寫,是為了區(qū)分類名,類名一般大寫 java中存在不同包相同類的名稱,我們可以使用包名進行區(qū)分 一般情況下,在使用類的情況下,我們都使用類的

    2024年02月05日
    瀏覽(24)
  • 1.0、Java 繼承與多態(tài) - 成員變量訪問特點

    父類:Father.java 文件如下所示 - 子類:Child.java 文件如下所示 - - 父類對象只能訪問父類中的成員變量; - 而子類對象既可以訪問父類中的成員變量,也可以訪問自己類中的成員變量; ? 在父子類的繼承關(guān)系當中,如果父類和子類的成員變量重名時,子類對象有下面兩種訪問

    2023年04月08日
    瀏覽(18)
  • Educoder/頭歌JAVA——JAVA面向?qū)ο螅悍庋b、繼承和多態(tài)的綜合練習(xí)

    Educoder/頭歌JAVA——JAVA面向?qū)ο螅悍庋b、繼承和多態(tài)的綜合練習(xí)

    目錄 第1關(guān):封裝、繼承和多態(tài)進階(一) 相關(guān)知識 面向?qū)ο笏枷?封裝 繼承 組合和繼承 構(gòu)造函數(shù) super()和this() 編程要求 第2關(guān):封裝、繼承和多態(tài)進階(二) 相關(guān)知識 重寫和重載 abstract(抽象類)和interface(接口) final static static的作用 多態(tài) 編程要求 第

    2024年02月04日
    瀏覽(65)
  • Java SE 繼承和多態(tài) (圖文搭配,萬字詳解!!)

    Java SE 繼承和多態(tài) (圖文搭配,萬字詳解?。?

    目錄 1.繼承 1.1 為什么需要繼承 1.2 繼承概念? 1.3 繼承的語法 1.4 父類成員訪問 1.4.1 子類中訪問父類的成員變量 1.4.2 子類中訪問父類的成員方法 ?1.5 super? 1.6 子類構(gòu)造方法 1.7 super和this 1.8 再談初始化 1.9 protected 1.10 繼承方式 ?1.11 final 1.12 繼承與組合 2

    2024年02月05日
    瀏覽(27)
  • 圖書管理借閱系統(tǒng)【Java簡易版】Java三大特征封裝,繼承,多態(tài)的綜合運用

    圖書管理借閱系統(tǒng)【Java簡易版】Java三大特征封裝,繼承,多態(tài)的綜合運用

    前言 前幾篇文章講到了Java的基本語法規(guī)則,今天我們就用前面學(xué)到的數(shù)組,類和對象,封裝,繼承,多態(tài),抽象類,接口等做一個圖書管理借閱系統(tǒng)。 Java語言是面向?qū)ο蟮模允紫纫治鐾瓿蛇@個圖書管理系統(tǒng),有哪些對象: ??使用者User ??書Book ??操作Operation 使用者

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包