欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談java 面對(duì)對(duì)象(抽象 繼承 接口 多態(tài))

 更新時(shí)間:2017年02月21日 10:41:13   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇淺談java 面對(duì)對(duì)象(抽象 繼承 接口 多態(tài))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

什么是繼承?

多個(gè)類中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類中,那么多個(gè)類無(wú)需再定義這些屬性和行為,只要繼承那個(gè)類即可。

多個(gè)類可以稱為子類,單獨(dú)這個(gè)類稱為父類、超類或者基類。

子類可以直接訪問(wèn)父類中的非私有的屬性和行為。

通過(guò) extends 關(guān)鍵字讓類與類之間產(chǎn)生繼承關(guān)系。

class SubDemo extends Demo{} //SubDemo是子類,Demo是父類

繼承有什么好處?

•提高代碼的復(fù)用性。

•讓類與類之間產(chǎn)生了關(guān)系,是多態(tài)的前提。

繼承的特點(diǎn)

1、Java只支持單繼承,不支持多繼承。

//一個(gè)類只能有一個(gè)父類,不可以有多個(gè)父類。
class SubDemo extends Demo{} //ok
class SubDemo extends Demo1,Demo2...//error

 

2.Java支持多層(重)繼承(繼承體系)。

class A{}
class B extends A{}
class C extends B{}

使用繼承時(shí)的注意事項(xiàng)

•如果類之間存在著:is a 的關(guān)系,就可以考慮使用繼承。

•不要為了繼承部分功能,而去使用繼承。

super和this有什么區(qū)別?

super是一個(gè)關(guān)鍵字,代表父類的存儲(chǔ)空間標(biāo)識(shí)。(可以理解為父親的引用)

super和this的用法相似。

this代表對(duì)象的引用(誰(shuí)調(diào)用就代表誰(shuí));
super代表當(dāng)前子類對(duì)父類的引用。

使用場(chǎng)景

•當(dāng)子父類出現(xiàn)同名成員時(shí),可以用super進(jìn)行區(qū)分;
•子類要調(diào)用父類構(gòu)造函數(shù)時(shí),可以使用super語(yǔ)句。

區(qū)別

1.成員變量

this.變量    --    本類的
super.變量    --    父類的

2.構(gòu)造方法

this(...)    --    本類的
super(...)    --    父類的

3.成員方法

this.方法名()    --    本類的   
super.方法名()    --    父類的

super();和this();都是在構(gòu)造函數(shù)的第一行,不能同時(shí)出現(xiàn)。

方法的重寫(覆蓋)

子類中出現(xiàn)與父類一模一樣的方法時(shí)(除了權(quán)限修飾符,權(quán)限修飾符大于等于不包括private,返回值類型,方法名和參數(shù)列表相同),會(huì)出現(xiàn)覆蓋操作,也稱為重寫或者復(fù)寫。

父類私有方法,子類看不到,因此父類私有方法的重寫也就無(wú)從談起。

覆蓋注意事項(xiàng):

•覆蓋時(shí),子類方法權(quán)限一定要大于等于父類方法權(quán)限;

•靜態(tài)只能覆蓋靜態(tài)。

覆蓋的使用場(chǎng)景:

當(dāng)子類需要父類的功能,而功能主體子類有自己特有內(nèi)容時(shí),可以復(fù)寫父類中的方法,這樣,既沿襲了父類的功能,又定義了子類特有的內(nèi)容。

方法重寫和重載有什么區(qū)別?

方法的重寫用在子類方法與父類方法一模一樣時(shí),除權(quán)限修飾符,返回值類型,方法名和參數(shù)列表都是相同的。

重載用在同一個(gè)類中各方法方法名相同,參數(shù)列表不同(與返回值類型沒(méi)有關(guān)系)的情況。

子父類中構(gòu)造方法的用法:

1.子類的初始化過(guò)程中,首先回去執(zhí)行父類的初始化動(dòng)作。因?yàn)樽宇惖臉?gòu)造方法中默認(rèn)有一個(gè)super()。子類要使用父類的成員變量,這個(gè)初始化,必須在子類初始化之前完成。所以,子類的初始化過(guò)程中,會(huì)先執(zhí)行父類的初始化。

2.如果父類沒(méi)有無(wú)參構(gòu)造方法

•使用super調(diào)用父類的帶參構(gòu)造。推薦方式。

•使用this調(diào)用本身的其他構(gòu)造。

靜態(tài)代碼塊、構(gòu)造代碼塊,構(gòu)造方法的執(zhí)行順序:

父類靜態(tài)代碼塊→子類靜態(tài)代碼塊→父類構(gòu)造代碼塊→父類構(gòu)造方法→子類構(gòu)造代碼塊→子類構(gòu)造方法

final關(guān)鍵字

final是一個(gè)關(guān)鍵字,可以用于修飾類,成員變量,成員方法。

特點(diǎn):

它修飾的類不能被繼承。

它修飾的成員變量是一個(gè)常量。

它修飾的成員方法是不能被子類重寫的。

final修飾的常量定義一般都有書寫規(guī)范,被final修飾的常量名稱,所有字母都大寫。

final修飾成員變量,必須初始化,初始化有兩種

顯示初始化;

構(gòu)造方法初始化。
但是不能兩個(gè)一起初始化

final和private的區(qū)別:

final修飾的類可以訪問(wèn);
private不可以修飾外部類,但可以修飾內(nèi)部類(其實(shí)把外部類私有化是沒(méi)有意義的)。

final修飾的方法不可以被子類重寫;
private修飾的方法表面上看是可以被子類重寫的,其實(shí)不可以,子類是看不到父類的私有方法的。

final修飾的變量只能在顯示初始化或者構(gòu)造函數(shù)初始化的時(shí)候賦值一次,以后不允許更改;
private修飾的變量,也不允許直接被子類或一個(gè)包中的其它類訪問(wèn)或修改,但是他可以通過(guò)set和get方法對(duì)其改值和取值。


多態(tài)

概念:

對(duì)象在不同時(shí)刻表現(xiàn)出來(lái)的不同狀態(tài)。

多態(tài)的前提:

要有繼承或者實(shí)現(xiàn)關(guān)系。

要有方法的重寫。

要有父類引用指向子類對(duì)象。

程序中的體現(xiàn):

父類或者接口的引用指向或者接收自己的子類對(duì)象。

好處和作用:

多態(tài)的存在提高了程序的擴(kuò)展性和后期可維護(hù)性。

弊端:

父類調(diào)用的時(shí)候只能調(diào)用父類里的方法,不能調(diào)用子類的特有方法,因?yàn)槟悴⒉磺宄?lái)會(huì)有什么樣的子類繼承你。

多態(tài)的成員特點(diǎn):

成員變量:編譯時(shí)期:看引用型變量所屬的類中是否有所調(diào)用的變量;

運(yùn)行時(shí)期:也是看引用型變量所屬的類是否有調(diào)用的變量。

成員變量無(wú)論編譯還是運(yùn)行都看引用型變量所屬的類,簡(jiǎn)單記成員變量,編譯和運(yùn)行都看等號(hào)左邊。

成員方法:編譯時(shí)期:要查看引用變量所屬的類中是否有所調(diào)用的成員;

運(yùn)行時(shí)期:要查看對(duì)象所屬的類中是否有所調(diào)用的成員。如果父子出現(xiàn)同名的方法,會(huì)運(yùn)行子類中的方法,因?yàn)榉椒ㄓ懈采w的特性。

編譯看左邊運(yùn)行看右邊。

靜態(tài)方法:編譯時(shí)期:看的引用型變量所屬的類中是否有所調(diào)用的變量;

運(yùn)行時(shí)期:也是看引用型變量所屬的類是否有調(diào)用的變量。

編譯和運(yùn)行都看等號(hào)左邊。

一定不能夠?qū)⒏割惖膶?duì)象轉(zhuǎn)換成子類類型!

父類的引用指向子類對(duì)象,該引用可以被提升,也可以被強(qiáng)制轉(zhuǎn)換。

多態(tài)自始至終都是子類對(duì)象在變化!

//多態(tài)向下轉(zhuǎn)型和向上轉(zhuǎn)型的例子,多態(tài)轉(zhuǎn)型解決了多態(tài)中父類引用不能使用子類特有成員的弊端。
class PolymorphicTest2 {
  public static void main(String[] args) {
    Phone p1 = new Nokia();    //向上轉(zhuǎn)型,類型提升
    Nokia no = (Nokia)p1;     //向下轉(zhuǎn)型,強(qiáng)制將父類的引用轉(zhuǎn)換成子類類型,不能將Nokia類型轉(zhuǎn)成Moto或Nexus類型
    no.print();           //輸出結(jié)果為Phone---null---0,因?yàn)槔^承了父類的方法

    Phone p2 = new Moto();
    Moto m = (Moto)p2;
    m.print();          //輸出結(jié)果為Moto---yellow---1599,方法重寫,子類方法覆蓋父類方法

    Phone p3 = new Nexus();
    Nexus ne = (Nexus)p3;
    ne.print();
  }
}

class Phone{  
  String color;
  int price;

  public void print(){
    System.out.println("Phone---" + color + "---" + price );
  }  
}

class Nokia extends Phone{
  String color = "red";
  int price = 1009;

  //public void print(){
  //  System.out.println("Nokia---" + color + "---" + price);
  //}
}

class Moto extends Phone{
  String color = "yellow";
  int price = 1599;

  public void print(){
    System.out.println("Moto---" + color + "---" + price);
  }
}

class Nexus extends Phone{
  String color = "black";
  int price = 1999;

  public void print(){
    System.out.println("Nexus---" + color + "---" + price);
  }
}
}

抽象(abstract)

抽象就是從多個(gè)事物中將共性的,本質(zhì)的內(nèi)容抽象出來(lái)。

抽象類:

Java中可以定義沒(méi)有方法體的方法,該方法的具體實(shí)現(xiàn)由子類完成,該方法稱為抽象方法,包含抽象方法的類就是抽象類。

由來(lái):

多個(gè)對(duì)象都具備相同的功能,但是功能具體內(nèi)容有所不同,那么在抽取過(guò)程中,只抽取了功能定義,并未抽取功能主體,那么只有功能聲明,沒(méi)有功能主體的方法稱為抽象方法。

抽象類特點(diǎn):

抽象方法一定在抽象類中;

抽象方法和抽象類都必須被abstract關(guān)鍵字修飾;

抽象類不可以用new創(chuàng)建對(duì)象,因?yàn)檎{(diào)用抽象方法沒(méi)意義;

抽象類中的抽象方法要被使用,必須由子類復(fù)寫其所有的抽象方法后,建立子類對(duì)象調(diào)用; 如果子類只覆蓋了部分的抽象方法,那么該子類還是一個(gè)抽象類;

抽象類中可以有抽象方法,也可以有非抽象方法,抽象方法用于子類實(shí)例化;

如果一個(gè)類是抽象類,那么,繼承它的子類,要么是抽象類,要么重寫所有抽象方法。

特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓該類建立對(duì)象。

抽象類的成員特點(diǎn):

成員變量:可以是變量,也可以是常量;

構(gòu)造方法:有構(gòu)造方法;

成員方法:可以是抽象方法,也可以是非抽象方法。

abstract class 葵花寶典 {
  public abstract void 自宮();
}

class 岳不群 extends 葵花寶典 {
  public void 自宮(){
    System.out.println("剪刀");
  }
}

class 林平之 extends 葵花寶典{
  public void 自宮(){
    System.out.println("指甲刀");
  }
}
class AbstractTest {
  public static void main(String[] args) {
    岳不群 岳 = new 岳不群();
    岳.自宮();

    林平之 林 = new 林平之();
    林.自宮();
  }
}

抽象類注意事項(xiàng):

抽象類不能被實(shí)例化,為什么還有構(gòu)造函數(shù)?

只要是class定義的類里面就肯定有構(gòu)造函數(shù)。抽象類中的函數(shù)是給子類實(shí)例化的。

一個(gè)類沒(méi)有抽象方法,為什么定義為抽象類?

不想被繼承,還不想被實(shí)例化。

抽象關(guān)鍵字abstract不可以和哪些關(guān)鍵字共存?

final:如果方法被抽象,就需要被覆蓋,而final是不可以被覆蓋,所以沖突。

private:如果函數(shù)被私有了,子類無(wú)法直接訪問(wèn),怎么覆蓋呢?

static:不需要對(duì)象,類名就可以調(diào)用抽象方法。而調(diào)用抽象方法沒(méi)有意義。

接口(interface)

接口是抽象方法和常量值的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類只包含常量和方法的定義,而沒(méi)有變量和方法的實(shí)現(xiàn)。

格式:interface 接口名{}

接口的出現(xiàn)將”多繼承“通過(guò)另一種形式體現(xiàn)出來(lái),即”多實(shí)現(xiàn)“。

實(shí)現(xiàn)(implements)

格式:class 類名 implements 接口名 {}

特點(diǎn):

接口不能被實(shí)例化。

一個(gè)類如果實(shí)現(xiàn)了接口,要么是抽象類,要么實(shí)現(xiàn)接口中的所有方法。

接口的成員特點(diǎn):

接口中的成員修飾符是固定的!

成員常量:public static final,接口里定義的變量是全局常量,而且修飾符只能是這三個(gè)關(guān)鍵字,都可以省略,常量名要大寫。

成員方法:public abstract,接口里定義的方法都是抽象的,兩個(gè)修飾符關(guān)鍵字可省略。

推薦:永遠(yuǎn)手動(dòng)給出修飾符。

繼承與實(shí)現(xiàn)的區(qū)別:

類與類之間稱為繼承關(guān)系:因?yàn)樵擃悷o(wú)論是抽象的還是非抽象的,它的內(nèi)部都可以定義非抽象方法,這個(gè)方法可以直接被子類使用,子類繼承即可。只能單繼承,可以多層繼承。((class))

類與接口之間是實(shí)現(xiàn)關(guān)系:因?yàn)榻涌谥械姆椒ǘ际浅橄蟮?,必須由子類?shí)現(xiàn)才可以實(shí)例化。可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn);還可以在繼承一個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口。((class) extends (class) implements (interface1,interface2…))

接口與接口之間是繼承關(guān)系:一個(gè)接口可以繼承另一個(gè)接口,并添加新的屬性和抽象方法,并且接口可以多繼承。((interface) extends (interface1,interface2…))

抽象類和接口的區(qū)別:

成員變量

抽象類能有變量也可以有常量

接口只能有常量

成員方法

抽象類可以有非抽象的方法,也可以有抽象的方法

接口只能有抽象的方法

構(gòu)造方法

-抽象類有構(gòu)造方法
-接口沒(méi)有構(gòu)造方法

類與抽象類和接口的關(guān)系

類與抽象類的關(guān)系是繼承 extends

類與接口的關(guān)系是實(shí)現(xiàn) implements

接口的思想特點(diǎn):

1.接口是對(duì)外暴露的規(guī)則;

2.接口是程序的功能擴(kuò)展;

3.接口的出現(xiàn)降低耦合性;(實(shí)現(xiàn)了模塊化開(kāi)發(fā),定義好規(guī)則,每個(gè)人實(shí)現(xiàn)自己的模塊,大大提高了開(kāi)發(fā)效率)

4.接口可以用來(lái)多實(shí)現(xiàn);

5.多個(gè)無(wú)關(guān)的類可以實(shí)現(xiàn)同一個(gè)接口;

6.一個(gè)類可以實(shí)現(xiàn)多個(gè)相互直接沒(méi)有關(guān)系的接口;

7.與繼承關(guān)系類似,接口與實(shí)現(xiàn)類之間存在多態(tài)性。

//運(yùn)動(dòng)員和教練的案例(下圖是思路分析)

/*
  籃球運(yùn)動(dòng)員和教練
  乒乓球運(yùn)動(dòng)員和教練
  現(xiàn)在籃球運(yùn)動(dòng)員和教練要出國(guó)訪問(wèn),需要學(xué)習(xí)英語(yǔ)
  請(qǐng)根據(jù)你所學(xué)的知識(shí),分析出來(lái)哪些是類,哪些是抽象類,哪些是接口
*/
interface SpeakEnglish {
  public abstract void speak();
}

interface GoAboard{
  public abstract void aboard();
}

abstract class Person {
  private String name;
  private int age;

  public Person(){}

  public Person(String name,int age){
    this.name = name;
    this.age = age;
  }

  public void setName(String name){
    this.name = name;
  }
  public String getName(){
    return name;
  }

  public void setAge(int age){
    this.age = age;
  }
  public int getAge(){
    return age;
  }

  //吃飯
  public abstract void eat();
  //睡覺(jué)
  public void sleep(){
    System.out.println("Zzz...");
  }
}
//運(yùn)動(dòng)員
abstract class Player extends Person {
  public abstract void study();
}
//教練
abstract class Coach extends Person {
  public abstract void teach();
}

//籃球運(yùn)動(dòng)員
class BasketballPlayer extends Player implements SpeakEnglish,GoAboard{
  public void eat(){
    System.out.println(getAge() + "歲的" + getName() + "吃雞腿");
  }

  public void study(){
    System.out.println(getAge() + "歲的" + getName() + "學(xué)扣籃");
  }

  public void speak(){
    System.out.println(getAge() + "歲的" + getName() + " Say Hello World");
  }

  public void aboard(){
    System.out.println(getAge() + "歲的" + getName() + " Go Aboard");
  }
}
//乒乓運(yùn)動(dòng)員
class PingPangPlayer extends Player{
  public void eat(){
    System.out.println(getAge() + "歲的" + getName() + "吃雞蛋");
  }

  public void study(){
    System.out.println(getAge() + "歲的" + getName() + "學(xué)扣球");
  }
}
//籃球教練
class BasketballCoach extends Coach implements SpeakEnglish {
  public void eat(){
    System.out.println(getAge() + "歲的" + getName() + "啃雞爪");
  }

  public void teach(){
    System.out.println(getAge() + "歲的" + getName() + "教扣籃");
  }

  public void speak(){
    System.out.println(getAge() + "歲的" + getName() + " Say Hello Java");
  }

  public void aboard(){
    System.out.println(getAge() + "歲的" + getName() + " Go Aboard");
  }
}
//乒乓球教練
class PingPangCoach extends Coach{
  public void eat(){
    System.out.println(getAge() + "歲的" + getName() + "吃雞蛋皮");
  }

  public void teach(){
    System.out.println(getAge() + "歲的" + getName() + "教扣球");
  }
}
class PlayerAndCoach {
  public static void main(String[] args) {
    //籃球運(yùn)動(dòng)員
    BasketballPlayer bp = new BasketballPlayer();
    bp.setName("郭艾倫");
    bp.setAge(33);
    bp.eat();
    bp.sleep();
    bp.study();
    bp.speak();
    bp.aboard();
    System.out.println("***********************");
    //籃球教練
    BasketballCoach bc = new BasketballCoach();
    bc.setName("波波維奇");
    bc.setAge(65);
    bc.eat();
    bc.sleep();
    bc.teach();
    bc.speak();
    bc.aboard();
    System.out.println("***********************");
    //多態(tài)
    Person p = new BasketballPlayer();
    p.setName("Kobe Bryant");
    p.setAge(33);
    p.eat();
    p.sleep();
    //p.study();
    //p.speak();

    BasketballPlayer bp2 = (BasketballPlayer)p;
    bp2.study();
    bp2.speak();
    bp2.aboard();
    System.out.println("***********************");
  }
}

內(nèi)部類

將一個(gè)類定義在另一個(gè)類里面,里面的那個(gè)類就稱為內(nèi)部類。內(nèi)部類的出現(xiàn),再次打破了Java單繼承的局限性。

訪問(wèn)特點(diǎn):

內(nèi)部類可以直接訪問(wèn)外部類的成員,包括私有成員。

外部類要訪問(wèn)內(nèi)部類的成員,必須要建立內(nèi)部類的對(duì)象。

內(nèi)部類分類及共性:

共性:

內(nèi)部類仍然是一個(gè)獨(dú)立的類,在編譯之后會(huì)內(nèi)部類會(huì)被編譯成獨(dú)立的.class文件,但是前面冠以外部類的類名和$符號(hào)。

內(nèi)部類不能用普通的方式訪問(wèn)。內(nèi)部類是外部類的一個(gè)成員,因此內(nèi)部類可以自由地訪問(wèn)外部類的成員變量,無(wú)論是否是private的。

成員內(nèi)部類

在外部類中有成員變量和成員方法,成員內(nèi)部類就是把整個(gè)一個(gè)類作為了外部類的成員;

成員內(nèi)部類是定義在類中方法外的類;

創(chuàng)建對(duì)象的格式為:外部類名.內(nèi)部類名 對(duì)象名 = 外部類對(duì)象.內(nèi)部類對(duì)象;

成員內(nèi)部類之所以可以直接訪問(wèn)外部類的成員,那是因?yàn)閮?nèi)部類中都持有一個(gè)外部類對(duì)象的引用:外部類名.this;

成員內(nèi)部類可以用的修飾符有final,abstract,public,private,protected,static.

靜態(tài)內(nèi)部類

靜態(tài)內(nèi)部類就是成員內(nèi)部類加上靜態(tài)修飾符static,定義在類中方法外。

在外部類中訪問(wèn)靜態(tài)內(nèi)部類有兩種場(chǎng)景:

在外部類中訪問(wèn)靜態(tài)內(nèi)部類中非靜態(tài)成員:*外部類名.內(nèi)部類名 對(duì)象名 = 外部類名.內(nèi)部對(duì)象*,需要通過(guò)創(chuàng)建對(duì)象訪問(wèn);

在外部類中訪問(wèn)靜態(tài)內(nèi)部類中的靜態(tài)成員:同樣可以使用上面的格式進(jìn)行訪問(wèn),也可以直接使用外部類名.內(nèi)部類名.成員。

局部?jī)?nèi)部類

局部?jī)?nèi)部類是定義在方法中的類。

方法內(nèi)部類只能在定義該內(nèi)部類的方法內(nèi)實(shí)例化,不可以在此方法外對(duì)其實(shí)例化。

方法內(nèi)部類對(duì)象不能使用該內(nèi)部類所在方法的非final局部變量。

可以用于方法內(nèi)部類的修飾符有final,abstract;

靜態(tài)方法中的方法內(nèi)部類只能訪問(wèn)外部的靜態(tài)成員。

匿名內(nèi)部類

匿名內(nèi)部類是內(nèi)部類的簡(jiǎn)化寫法,是建立一個(gè)帶內(nèi)容的外部類或者接口的子類匿名對(duì)象。

前提:

內(nèi)部類可以繼承或?qū)崿F(xiàn)一個(gè)外部類或者接口。

格式:

new 外部類名或者接口名(){重寫方法};

通常在方法的形式參數(shù)是接口或者抽象類,并且該接口中的方法不超過(guò)三個(gè)時(shí),可以將匿名內(nèi)部類作為參數(shù)傳遞。

不同修飾符修飾的內(nèi)容(和內(nèi)部類無(wú)關(guān))

 

  成員變量 成員方法 構(gòu)造方法
private   Y Y Y
默認(rèn) Y Y Y Y
protected   Y Y Y
public Y Y Y Y
abstract Y   Y  
static   Y Y Y
final Y Y Y  

 注意,常見(jiàn)規(guī)則如下:

•以后,所有的類都用public修飾。并且,在一個(gè)java文件中,只寫一個(gè)類。

•以后,所有的成員變量用private修飾。

•以后,所有的成員方法用public修飾。

如果是抽象類或者接口:public abstract + …

•以后,所有的構(gòu)造方法用public修飾。

如果類是工具類或者單例類:構(gòu)造用private修飾

四種權(quán)限修飾符

 

本類 同包(無(wú)關(guān)類或子類) 不同包(子類) 不同包(無(wú)關(guān)類)
private Y      
默認(rèn) Y Y    
protected Y Y Y  
public Y Y Y Y

 推薦:

•成員變量 private

•構(gòu)造方法 public

•成員方法 public

以上這篇淺談java 面對(duì)對(duì)象(抽象 繼承 接口 多態(tài))就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringMvc中的Bean加載機(jī)制詳解

    SpringMvc中的Bean加載機(jī)制詳解

    這篇文章主要介紹了SpringMvc中的Bean加載機(jī)制詳解,在Spring MVC中,Bean的作用主要是處理應(yīng)用程序的業(yè)務(wù)邏輯和數(shù)據(jù),例如,一個(gè)用戶管理應(yīng)用程序的Bean可能包括UserService、UserDao和UserController等,需要的朋友可以參考下
    2023-12-12
  • 基于Nacos實(shí)現(xiàn)Spring Cloud Gateway實(shí)現(xiàn)動(dòng)態(tài)路由的方法

    基于Nacos實(shí)現(xiàn)Spring Cloud Gateway實(shí)現(xiàn)動(dòng)態(tài)路由的方法

    這篇文章主要介紹了基于Nacos實(shí)現(xiàn)Spring Cloud Gateway實(shí)現(xiàn)動(dòng)態(tài)路由的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • poi導(dǎo)出word表格的操作講解

    poi導(dǎo)出word表格的操作講解

    這篇文章主要介紹了poi導(dǎo)出word表格的操作講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • java 中 String format 和Math類實(shí)例詳解

    java 中 String format 和Math類實(shí)例詳解

    這篇文章主要介紹了java 中 String format 和Math類實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解

    關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解

    這篇文章主要介紹了關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解,請(qǐng)求的轉(zhuǎn)發(fā),是指服務(wù)器收到請(qǐng)求后,從一個(gè)服務(wù)器端資源跳轉(zhuǎn)到同一個(gè)服務(wù)器端另外一個(gè)資源的操作,需要的朋友可以參考下
    2023-05-05
  • SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解

    SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • request.getParameter()方法的簡(jiǎn)單理解與運(yùn)用方式

    request.getParameter()方法的簡(jiǎn)單理解與運(yùn)用方式

    在JavaWeb開(kāi)發(fā)中,request對(duì)象扮演著至關(guān)重要的角色,它是HTTP請(qǐng)求的封裝,request.getParameter()用于獲取客戶端通過(guò)GET或POST方式發(fā)送的參數(shù),與之相對(duì),request.setAttribute()用于在服務(wù)器端設(shè)置屬性,這些屬性只在一次請(qǐng)求中有效
    2024-10-10
  • 一文解決pom.xml報(bào)錯(cuò)Dependency "xxx" not found的問(wèn)題

    一文解決pom.xml報(bào)錯(cuò)Dependency "xxx" not f

    我們?cè)谑褂胢aven進(jìn)行jar包管理時(shí)有時(shí)會(huì)遇到pom.xml中報(bào)錯(cuò)Dependency “XXX” not found,所以在本文中將給大家介紹一下pom.xml報(bào)錯(cuò)Dependency "xxx" not found的解決方案,需要的朋友可以參考下
    2024-01-01
  • IDEA開(kāi)啟Run Dashboard的幾種方式

    IDEA開(kāi)啟Run Dashboard的幾種方式

    Run Dashboard 是 IntelliJ IDEA 中的一個(gè)工具窗口,用于管理和監(jiān)視項(xiàng)目中正在運(yùn)行的應(yīng)用程序和配置,它提供了一種集中管理運(yùn)行和調(diào)試過(guò)程的方式,本文給大家介紹了IDEA開(kāi)啟Run Dashboard的幾種方式,需要的朋友可以參考下
    2024-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹(shù)的真正理解

    Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹(shù)的真正理解

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評(píng)論