日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java面向对象:关键字 —(16)

發(fā)布時(shí)間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java面向对象:关键字 —(16) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

static:靜態(tài)的

1.可以用來(lái)修飾的結(jié)構(gòu):主要用來(lái)修飾類的內(nèi)部結(jié)構(gòu)

屬性、方法、代碼塊、內(nèi)部類

2.static修飾屬性:靜態(tài)變量(或類變量)

2.1 屬性,是否使用static修飾,又分為:靜態(tài)屬性 vs 非靜態(tài)屬性(實(shí)例變量)
  • 實(shí)例變量:我們創(chuàng)建了類的多個(gè)對(duì)象,每個(gè)對(duì)象都獨(dú)立的擁一套類中的非靜態(tài)屬性。當(dāng)修改其中一個(gè)對(duì)象中的非靜態(tài)屬性時(shí),不會(huì)導(dǎo)致其他對(duì)象中同樣的屬性值的修改。
  • 靜態(tài)變量:我們創(chuàng)建了類的多個(gè)對(duì)象,多個(gè)對(duì)象共享同一個(gè)靜態(tài)變量。當(dāng)通過(guò)某一個(gè)對(duì)象修改靜態(tài)變量時(shí),會(huì)導(dǎo)致其他對(duì)象調(diào)用此靜態(tài)變量時(shí),是修改過(guò)了的。
  • 2.2 static修飾屬性的其他說(shuō)明:
  • ① 靜態(tài)變量隨著類的加載而加載。可以通過(guò)"類.靜態(tài)變量"的方式進(jìn)行調(diào)用
  • ② 靜態(tài)變量的加載要早于對(duì)象的創(chuàng)建。
  • ③ 由于類只會(huì)加載一次,則靜態(tài)變量在內(nèi)存中也只會(huì)存在一份:存在方法區(qū)的靜態(tài)域中。
  • ④ 類變量 實(shí)例變量
  • 類 yes no
  • 對(duì)象 yes yes
  • 2.3 靜態(tài)屬性舉例:System.out; Math.PI;

3.靜態(tài)變量?jī)?nèi)存解析:

4.static修飾方法:靜態(tài)方法、類方法

① 隨著類的加載而加載,可以通過(guò)"類.靜態(tài)方法"的方式進(jìn)行調(diào)用
② 靜態(tài)方法 非靜態(tài)方法

  • 類 yes no
  • 對(duì)象 yes yes

③ 靜態(tài)方法中,只能調(diào)用靜態(tài)的方法或?qū)傩?br /> 非靜態(tài)方法中,既可以調(diào)用非靜態(tài)的方法或?qū)傩?#xff0c;也可以調(diào)用靜態(tài)的方法或?qū)傩?/p>

5. static的注意點(diǎn):

5.1 在靜態(tài)的方法內(nèi),不能使用this關(guān)鍵字、super關(guān)鍵字
5.2 關(guān)于靜態(tài)屬性和靜態(tài)方法的使用,大家都從生命周期的角度去理解。

6.如何判定屬性和方法應(yīng)該使用static關(guān)鍵字:

6.1 關(guān)于屬性

屬性是可以被多個(gè)對(duì)象所共享的,不會(huì)隨著對(duì)象的不同而不同的。
類中的常量也常常聲明為static

6.2 關(guān)于方法

操作靜態(tài)屬性的方法,通常設(shè)置為static的
工具類中的方法,習(xí)慣上聲明為static的。 比如:Math、Arrays、Collections
7.使用舉例:
舉例一:Arrays、Math、Collections等工具類
舉例二:單例模式
舉例三:
class Circle{

private double radius; private int id;//自動(dòng)賦值public Circle(){id = init++;total++; }public Circle(double radius){this();

// id = init++;
// total++;
this.radius = radius;

}private static int total;//記錄創(chuàng)建的圓的個(gè)數(shù) private static int init = 1001;//static聲明的屬性被所對(duì)象所共享public double findArea(){return 3.14 * radius * radius; }public double getRadius() {return radius; }public void setRadius(double radius) {this.radius = radius; }public int getId() {return id; }public static int getTotal() {return total; }

}

1.設(shè)計(jì)模式的說(shuō)明

1.1 理解

設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式。

1.2 常用設(shè)計(jì)模式 — 23種經(jīng)典的設(shè)計(jì)模式 GOF
創(chuàng)建型模式,共5種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)型模式,共7種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共11種:策略模式、模板方法模式、觀察者模式、迭代器模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問(wèn)者模式、中介者模式、解釋器模式。

2.單例模式

2.1 要解決的問(wèn)題:
所謂類的單例設(shè)計(jì)模式,就是采取一定的方法保證在整個(gè)的軟件系統(tǒng)中,對(duì)某個(gè)類只能存在一個(gè)對(duì)象實(shí)例。
2.2 具體代碼的實(shí)現(xiàn):
餓漢式1:
class Bank{

//1.私化類的構(gòu)造器 private Bank(){}//2.內(nèi)部創(chuàng)建類的對(duì)象 //4.要求此對(duì)象也必須聲明為靜態(tài)的 private static Bank instance = new Bank();//3.提供公共的靜態(tài)的方法,返回類的對(duì)象 public static Bank getInstance(){return instance; }

}

餓漢式2:使用了靜態(tài)代碼塊
class Order{

//1.私化類的構(gòu)造器 private Order(){}//2.聲明當(dāng)前類對(duì)象,沒(méi)初始化 //4.此對(duì)象也必須聲明為static的 private static Order instance = null;static{instance = new Order();

}

//3.聲明public、static的返回當(dāng)前類對(duì)象的方法 public static Order getInstance(){return instance; }

}
懶漢式:
class Order{
//1.私化類的構(gòu)造器
private Order(){ }
//2.聲明當(dāng)前類對(duì)象,沒(méi)初始化
//4.此對(duì)象也必須聲明為static的
private static Order instance = null;

//3.聲明public、static的返回當(dāng)前類對(duì)象的方法 public static Order getInstance(){if(instance == null){instance = new Order();}return instance; }

}
2.3 兩種方式的對(duì)比:

  • 餓漢式:
  • 壞處:對(duì)象加載時(shí)間過(guò)長(zhǎng)。
  • 好處:餓漢式是線程安全的
  • 懶漢式:好處:延遲對(duì)象的創(chuàng)建。
  • 目前的寫(xiě)法壞處:線程不安全。--->到多線程內(nèi)容時(shí),再修改

main()方法作為程序的入口
main()方法也是一個(gè)普通的靜態(tài)方法
main()方法可以作為我們與控制臺(tái)交互的方式。(之前:使用Scanner)

如何將控制臺(tái)獲取的數(shù)據(jù)傳給形參:String[] args?
運(yùn)行時(shí):java 類名 “Tom” “Jerry” “123” “true”

sysout(args[0]);//“Tom”
sysout(args[3]);//“true” -->Boolean.parseBoolean(args[3]);
sysout(args[4]);//報(bào)異常

小結(jié):一葉知秋
public static void main(String[] args){//方法體}

權(quán)限修飾符:private 缺省 protected pubilc ---->封裝性
修飾符:static \ final \ abstract \native 可以用來(lái)修飾方法
返回值類型: 無(wú)返回值 / 有返回值 -->return
方法名:需要滿足標(biāo)識(shí)符命名的規(guī)則、規(guī)范;“見(jiàn)名知意”
形參列表:重載 vs 重寫(xiě);參數(shù)的值傳遞機(jī)制;體現(xiàn)對(duì)象的多態(tài)性
方法體:來(lái)體現(xiàn)方法的功能

main(){
Person p = new Man();
p.eat();
//p.earnMoney();

Man man = new Man();
man.eat();
man.earnMoney();
}

總結(jié)

以上是生活随笔為你收集整理的java面向对象:关键字 —(16)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。