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