java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this
1.函數(shù)
函數(shù)就是定義在類中,具有特定功能的一段小程序。
在面向?qū)ο缶幊痰恼Z言中,函數(shù)也叫方法。
2.函數(shù)的格式
修飾符 返回值類型 函數(shù)名(參數(shù)類型 實(shí)際參數(shù),....)
{
執(zhí)行語句;
return 返回值;
}
修飾符 public private static final[修飾的是常量]
返回值類型 函數(shù)/方法 運(yùn)行后返回結(jié)果的數(shù)據(jù)類型 返回值類型 可以是沒有 void
函數(shù)名
參數(shù)類型 參數(shù)的具體數(shù)據(jù)類型
實(shí)際參數(shù) 傳入?yún)?shù)的具體數(shù)值
return 用于結(jié)束函數(shù). 這個(gè)必須有的. 返回值類型未定義, 可以省略不寫 編譯器編譯時(shí)會(huì)自動(dòng)加上
返回值 該函數(shù)/方法 運(yùn)行完成后 ,該結(jié)果會(huì)返回給調(diào)用者接收
傳參:
當(dāng)方法被調(diào)用時(shí),傳遞值給參數(shù)。這個(gè)值被稱為實(shí)參或變量。參數(shù)列表是指方法的參數(shù)類型、順序和參數(shù)的個(gè)數(shù)。參數(shù)是可選的,方法可以不包含任何參數(shù)。
1.對(duì)象就是傳引用(在java里面,如果是類,都是傳引用),按引用傳遞意味著當(dāng)將一個(gè)參數(shù)傳遞給一個(gè)函數(shù)時(shí),函數(shù)接收的是原始值的內(nèi)存地址,而不是值的副本
2.原始類型就是傳值(注意Integer和String),按值傳遞意味著當(dāng)將一個(gè)參數(shù)傳遞給一個(gè)函數(shù)時(shí),函數(shù)接收的是原始值的一個(gè)副本
返回:
修飾符:
非訪問修飾符static
static修飾變量,則此變量在內(nèi)存中只保存一份。(因此不常變動(dòng)的數(shù)據(jù)適合聲明為靜態(tài)的)
static修飾函數(shù)時(shí),此函數(shù)內(nèi)無法訪問到函數(shù)外定義的非static類型的全局變量。
類在加載到內(nèi)存的時(shí)候是最先加載進(jìn)來的部分是被static修飾的靜態(tài)成員。(因此可以解釋上一點(diǎn)為啥訪問不到)
靜態(tài)成員的訪問不需要依賴對(duì)象,可以直接通過類名.的方式來訪問。靜態(tài)代碼塊的用法(重要)。
靜態(tài)函數(shù)聲明周期跟類保持一致[內(nèi)存不會(huì)得到釋放,如果類中函數(shù)變量全是靜態(tài),可能會(huì)出現(xiàn)Java內(nèi)存溢出,所以面向?qū)ο缶幊蘛
什么樣的方法適合聲明為static類型的方法?都不需要依賴對(duì)象,很方便調(diào)用
工具方法:不依賴類的非靜態(tài)的全局變量
packagejava_learning;public classStaticLearn {private staticString name;private staticString gender;private static intage;public StaticLearn(String name,String gender,intage) {this.name=name;this.gender=gender;this.age=age;
}public staticString getGender() {returngender;
}public staticString getName() {returnname;
}public static voidsetName(String name) {
StaticLearn.name=name;
}public static voidsetGender(String gender) {
StaticLearn.gender=gender;
}public static intgetAge() {returnage;
}public static void setAge(intage) {
StaticLearn.age=age;
}
}
View Code
packagejava_learning;public classTestStaticLearn {static {//完成數(shù)據(jù)的初始化 比main方法或者其他方法先執(zhí)行
System.out.println("靜態(tài)代碼塊");
System.out.println("+++++++++++++華麗分割線========");
}public static voidmain(String[] args) {
StaticLearn sta= new StaticLearn("肖戰(zhàn)", "男", 28);
StaticLearn sta1= new StaticLearn("王一博", "男", 22);
StaticLearn sta2= new StaticLearn("金瀚", "男", 26);
System.out.println(sta.getName()+ "," + sta.getGender() + "," +sta.getAge());
System.out.println(sta1.getName()+ "," + sta1.getGender() + "," +sta1.getAge());
System.out.println(sta2.getName()+ "," + sta2.getGender() + "," +sta2.getAge());
TestStaticLearn.sayHi();//靜態(tài)成員的訪問不需要依賴對(duì)象,可以直接通過類名來訪問。靜態(tài)代碼塊的用法(重要)。
}public static String name1 = "肖戰(zhàn)";public String name2 = "張翰";public static voidsayHi() {
System.out.println("hello," +name1);//System.out.println("hello,"+name2);報(bào)錯(cuò)//static修飾函數(shù)時(shí),此函數(shù)內(nèi)無法訪問到函數(shù)外定義的非static類型的全局變量。//是因?yàn)轭愒诩虞d到內(nèi)存的時(shí)候是最先加載進(jìn)來的部分是被static修飾的靜態(tài)成員。
}
}
#######################
靜態(tài)代碼塊+++++++++++++華麗分割線========金瀚,男,26金瀚,男,26金瀚,男,26hello,肖戰(zhàn)
View Code
非訪問修飾符final:
final:最終的
被final修飾的變量,它的值不能再做修改;
被final修飾的函數(shù),不能被重寫;
被final修飾的類,不能被繼承。
非訪問修飾符abstract:
抽象的
訪問修飾符:
一個(gè)人可能同時(shí)又是設(shè)計(jì)者和調(diào)用者,修飾符的出現(xiàn)是為了空著設(shè)計(jì)者設(shè)計(jì)的類有哪些東西可以唄調(diào)用者使用 ,哪些東西不能被調(diào)用,從而實(shí)現(xiàn)訪問控制,保護(hù)類里面的一些重要的成員。
public,protected,默認(rèn)修飾符,private;[可修飾函數(shù)、修飾變量,基本上不會(huì)用private修飾類,存在的意思是什么呢?啊哈]
該四種訪問修飾符的權(quán)限從左到右依次降低。
private:Java語言中對(duì)訪問權(quán)限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的屬性以及方法只能被該類的對(duì)象訪問,其子類不能訪問,更不能允許跨包訪問。
default:即不加任何訪問修飾符,通常稱為“默認(rèn)訪問權(quán)限“或者“包訪問權(quán)限”。該模式下,只允許在同一個(gè)包中進(jìn)行訪問。
protected:介于public 和 private 之間的一種訪問修飾符,一般稱之為“保護(hù)訪問權(quán)限”。被其修飾的屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包訪問。
原文鏈接:https://blog.csdn.net/sdjadycsdn/article/details/81560096
3.面向過程
“面向過程”(Procedure Oriented)是一種以過程為中心的編程思想。“面向過程”也可稱之為“面向記錄”編程思想。
就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。
局部變量之前不能用修飾符,方法名前沒有的話有默認(rèn)修飾符。
4.面向?qū)ο?/p>
面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming), 其本質(zhì)是以建立模型體現(xiàn)出來的抽象思維過程和面向?qū)ο蟮姆椒āDP褪怯脕矸从超F(xiàn)實(shí)世界中事物特征的。任何一個(gè)模型都不可能反映客觀事物的一切具體特征,只能對(duì)事物特征和變化規(guī)律的一種抽象,且在它所涉及的范圍內(nèi)更普遍、更集中、更深刻地描述客體的特征。通過建立模型而達(dá)到的抽象是人們對(duì)客體認(rèn)識(shí)的深化。
5.兩者對(duì)比
我們現(xiàn)在要做一件 把 可樂放進(jìn)冰箱里.
面向過程: 打開冰箱->存儲(chǔ)可樂->關(guān)冰箱 代表語言 C
我們思考的是需要經(jīng)歷哪些步驟/過程去完成我們要做的事情. 注重過程面向
面向?qū)ο? 冰箱打開->冰箱存儲(chǔ)可樂->冰箱關(guān)閉 代表語言 Java C++ python
區(qū)別:
人做,冰箱做
面向過程是找到功能一步步去執(zhí)行
面向?qū)ο笫俏覀兿日业奖溥@個(gè)實(shí)體(對(duì)象),然后去用冰箱包含的功能,注重的是對(duì)象
面向?qū)ο笫腔诿嫦蜻^程,封裝了功能到具體的對(duì)象中去.
特點(diǎn):
1.面向?qū)ο蟾先祟惖乃伎剂?xí)慣
2.從過程的執(zhí)行者,轉(zhuǎn)換成了對(duì)象的指揮者
3.把復(fù)雜的問題,分解成一個(gè)個(gè)簡(jiǎn)單的問題
6.類,對(duì)象和構(gòu)造方法
類是一個(gè)模板,它描述一類對(duì)象的行為和狀態(tài)。--比如人、動(dòng)物、電器等等
類的組成:變量和函數(shù)
類描述的是具有共性的一類事物,所以又把類稱作模板技術(shù);
共性:
具有相同的屬性:Java變量;具有相同的行為:Java函數(shù)
對(duì)象是類的一個(gè)實(shí)例,有屬性和行為。
對(duì)象就是能夠被描述的書屋,都可以稱作對(duì)象. 比如某個(gè)具體人. 大狗. 他有他的名字,年齡, 有性別,有身高....
也可以有有些行為:說話,跑,學(xué)習(xí)等等.... 大狗這個(gè)對(duì)象就是學(xué)生類或者人類的一個(gè)實(shí)體....
類就是用于描述事物,對(duì)象就是該類事物的具體個(gè)體.
描述事物中的屬性和行為:
1.類是由成員組成
2.屬性對(duì)應(yīng)的就是類中的成員變量
3.行為對(duì)應(yīng)的就是類中的成員方法
構(gòu)造方法是一種特殊的方法,它是一個(gè)與類同名且返回值類型為同名類類型的方法。對(duì)象的創(chuàng)建就是通過構(gòu)造方法來完成,其功能主要是完成對(duì)象的初始化。當(dāng)類實(shí)例化一個(gè)對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造方法。
構(gòu)造函數(shù)/方法
用于創(chuàng)建對(duì)象. 初始化對(duì)象 如果不寫, 表示方法里沒有自定義功能, 為空那編譯器編譯時(shí)會(huì)自動(dòng)補(bǔ)上一個(gè)默認(rèn)的構(gòu)造函數(shù),如果類中有定義代餐的構(gòu)造函數(shù),那么默認(rèn)的構(gòu)造函數(shù)就會(huì)被覆蓋掉了。
構(gòu)造方法是一種特殊的成員方法,它具有如下特殊性:
1.作用: (1)創(chuàng)建類的實(shí)例, (2)對(duì)構(gòu)造出來的實(shí)例(對(duì)象)進(jìn)行初始化
2.構(gòu)造方法必須和類同名 沒有返回值, 連void也沒有
3.主要完成對(duì)象初始化的工作. new 的時(shí)候就會(huì)進(jìn)行
4.類中必定有構(gòu)造方法. 如果不寫, 表示方法里沒有自定義功能, 為空那編譯器編譯時(shí)會(huì)自動(dòng)補(bǔ)上
5.不能被static final 等修飾符修飾
packagejava_learning;public classPerson {//成員屬性 名字 年齡 性別
public String name;//String類型默認(rèn)值null
public int age;//int類型默認(rèn)值為0 double類型默認(rèn)值為0.0
publicString school;publicString speciality;publicPerson() {
System.out.println("我是無參構(gòu)造方法");
}public Person(String name, intage,String school, String speciality) {this();
name=name;this.age =age;this.school=school;this.speciality =speciality;
}public voidmsg() {
System.out.println("我叫:" + this.name);
}public voidspecialities() {
System.out.println("我的特長(zhǎng)是:"+this.speciality);
}
}
View Code
packagejava_learning;public classtest_person {public static voidmain(String[] args) {//TODO Auto-generated method stub
Person person2=new Person("肖戰(zhàn)",28,"重慶工商大學(xué)","唱歌,跳舞,演戲,迷人");
person2.msg();
person2.specialities();
}
}
我叫:肖戰(zhàn)
我的特長(zhǎng)是:唱歌,跳舞,演戲,迷人
View Code
this:代表的是一個(gè)對(duì)象的引用
調(diào)用函數(shù)之前首先要想到的是:準(zhǔn)備對(duì)象————通過調(diào)用構(gòu)造函數(shù)
函數(shù)(并非構(gòu)造函數(shù))到底怎么定義:返回值,參數(shù)列表的定義原則:取決于我們要定義的這個(gè)函數(shù)是為了解決一個(gè)什么問題
調(diào)用無參構(gòu)造方法:創(chuàng)建最原始的對(duì)象
調(diào)用有參構(gòu)造方法:創(chuàng)建帶參的對(duì)象
7.命名規(guī)則
java中的包的名字都是由小寫單詞組成。但是由于Java面向?qū)ο缶幊痰奶匦?#xff0c;每一名Java程序員都可以編寫屬于自己的Java包,為了保障每個(gè)Java包命名的唯一性,在最新的Java編程規(guī)范中,要求程序員在自己定義的包的名稱之前加上唯一的前綴。由于互聯(lián)網(wǎng)上的域名稱是不會(huì)重復(fù)的,所以程序員一般采用自己在互聯(lián)網(wǎng)上的域名稱作為自己程序包的唯一前綴。例如com.dongnao.jy
類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫;如果類名稱由多個(gè)單詞組成,則每個(gè)單詞的首字母均應(yīng)為大寫例如Human,Animal,Dog。
8.靜態(tài)變量和靜態(tài)方法
類變量:類變量也聲明在類中,方法體之外,但必須聲明為static修飾。我通常也稱為靜態(tài)變量。無論一個(gè)類實(shí)例化多少對(duì)象,它的靜態(tài)變量只有一份拷貝。 靜態(tài)變量也被稱為類變量。局部變量不能被聲明為 static 變量。
只有一份拷貝, 一處修改,全都變化;
靜態(tài)函數(shù): static 關(guān)鍵字用來聲明獨(dú)立于對(duì)象的靜態(tài)方法。靜態(tài)方法不能使用類的非靜態(tài)變量。
靜態(tài)函數(shù),可以通過類直接調(diào)用,不必實(shí)例化。
普通函數(shù),我們稱為成員函數(shù)。
靜態(tài)不能調(diào)用非靜態(tài)
注意:和python中的區(qū)別。
總結(jié)
以上是生活随笔為你收集整理的java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高三语文模拟试卷
- 下一篇: Sikuli+Selenium查询百度地