目錄
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供永吉網(wǎng)站建設、永吉做網(wǎng)站、永吉網(wǎng)站設計、永吉網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、永吉企業(yè)網(wǎng)站模板建站服務,10年永吉做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。方法
對方法的一些理解
設計方法的建議
方法的定義
面向對象和面向過程的區(qū)別
面向過程
面向對象
類和對象
類的構造器(類的構造函數(shù))
修飾詞:this
用于修飾屬性
用于修飾方法
this用于修飾構造器
方法的重載
什么是方法的重載
方法重載的例子
第一個例子,重載是依靠不同的參數(shù)來區(qū)別而不是依靠不同類型的返回值來區(qū)別
第二個例子,參數(shù)個數(shù)不同情況下的重載
第三個例子,參數(shù)類型不同情況下的重載
第四個例子,參數(shù)位置不同情況下的重載
形參和實參
形參(形式參數(shù))
實參(實際參數(shù))
可變個數(shù)的形參(傳遞的參數(shù)個數(shù)是可變的)
基本格式
使用說明
舉個栗子
權限修飾符(public、protected、default、private)
封裝
封裝的目的
封裝的作用
一個封裝例子
[訪問修飾符] 方法的返回值類型 方法名([參數(shù)類型 參數(shù)名]){
...
方法體
...
[return 返回值;]
}
public class class1{
void fun1(){
System.out.println("這是一個方法");
}
}
//class1.java
public class class1{
//以人類為例
//定義一些屬性
private String country;//國家
private String area;//地區(qū)
private String city;//城市
private String address;//住址
private int age;//年齡
private String sex;//性別
private String name;//姓名
private String phone;//電話
//定義一些方法
//告訴別人自己的國家
public String getCountry() {
return country;
}
//告訴別人自己的地區(qū)
public String getArea() {
return area;
}
}
//class2.java
public class class2{
public static void main(String[] args) {
//創(chuàng)建一個對象(實例化一個類)
class1 c1 = new class1();
//輸出
System.out.println(c1.getCountry());
}
}
類的構造器(類的構造函數(shù))//class1.java
public class class1{
}
//class2.java
public class class2{
public static void main(String[] args){
class1 c1 = new class1();
//類class1中,什么內容都沒有,但是在此處創(chuàng)建class1的對象可以成功地創(chuàng)建,這就是調用了隱式存在的類的構造函數(shù)
}
}
//class1.java
public calss class1{
int age;
public class1(int i){
this.age = i;
}
//上面定義了有參構造函數(shù),此處便需要一并顯式定義無參構造函數(shù)
public class1(){
this.age = 1;
}
}
//this修飾屬性時的用法
this.屬性名 = 值或者是變量名;
//class1.java
public class class1{
int age;
public void setAge(int num){
age = num;
this.age = num;
//上面兩種寫法的效果相同,兩種寫法屬性age都可以獲得num的值
}
}
//class1.java
public class class1{
int age;
public void setName1(int age){
age = age;
//當發(fā)生重名并且不使用this修飾符的情況下,屬性的賦值會遵守“就近原則”
//也就是說,此處等式左邊的age獲得的值,并不是setName1函數(shù)中傳遞進來的參數(shù)age的值,而是這一個類中屬性age的值,因此執(zhí)行完這一句后,屬性age的值為0(相當于把自己賦值給自己,什么都不會被改變)
}
public void setName2(int age){
this.age = age;
//執(zhí)行完這一句后,屬性age的值為setName2函數(shù)中傳遞進來的參數(shù)age的值
}
}
//class1.java
public class class1{
//計算兩數(shù)的和
public int add(int a,int b){
return a + b;
}
//計算一組數(shù)字的和
public int addArr(int[] nums){
int sum = 0;
for(int i:nums){
sum = add(sum,i);//此處無論寫不寫this,調用的都是類class1下的add()方法,因此在方法調用時,this是可以省略的
}
return sum;
}
}
//class1.java
public class class1 {
int age;
String name;
//該類的無參構造器
public class1() {
//調用了一個該類的有參構造器
this("張三");
age = 10;
}
public class1(String name) {
this.name = name;
}
}
//class1.java
public calss class1{
//有如下兩個同名方法,它們的參數(shù)相同但是方法的返回值不同
public int add(int a,int b){}
public double add(int a,int b){}
//如果將上面的代碼復制到IDE中,則編譯器會報錯,因為方法的返回值并不作為方法重載的依據(jù)
}
第二個例子,參數(shù)個數(shù)不同情況下的重載//class1.java
public class class1{
//有以下兩個函數(shù),這兩個函數(shù)是重載的,它們的參數(shù)個數(shù)不同
public int add(int a,int b){}
public int add(int a,int b,int c){}
}
第三個例子,參數(shù)類型不同情況下的重載//class1.java
public class class1{
//下面幾種方法都是重載的,它們的參數(shù)類型不同
public double add(int a,int b){}
public double add(int a,double b){}
public double add(double a,int b){}
public double add(double a,double b){}
}
第四個例子,參數(shù)位置不同情況下的重載//class1.java
public class class1{
//參數(shù)位置不同情況下的重載
//這種情況需要特別注意,因為不是簡單粗暴地交換參數(shù)的位置就是重載了
//先來看下面幾種是重載的情況
public void show(int a,int b,String c){}
public void show(int a,String c,int b){}
public void show(String c,int a,int b){}
//這幾種寫法是可以成功重載的,簡單地說,它們也是屬于參數(shù)類型不同的情況
//將上面三個重載函數(shù)保留,那么下面這些寫法便不是重載,并且編譯器會報錯
public void show(int b,int a,String c){}
public void show(String c,int b,int a){}
//上面兩個函數(shù)不能構成重載,簡單地說,它們的參數(shù)類型和已經(jīng)存在的同名函數(shù)的參數(shù)類型相同
//因此嚴格地說來,只有兩種情況構成函數(shù)的重載
//1.參數(shù)的個數(shù)不同
//2.參數(shù)的位置不同
//用另一種方法分析,可能更容易看出上面函數(shù)不能重載的原因
//從函數(shù)的聲明來看,上面的函數(shù)聲明依次是這樣的
public void show(int,int,String);
public void show(int,String,int);
public void show(String,int,int);
public void show(int,int,String);
public void show(String,int,int);
//這樣便很容易可以發(fā)現(xiàn),有幾個函數(shù)在聲明時的參數(shù)類型順序是重復的,折舊造成這些參數(shù)類型順序重復的函數(shù)無法構成重載
}
形參和實參
形參(形式參數(shù))//class1.java
public class class1{
public static void main(String[] args){
show("111");//這邊傳遞的參數(shù)便是實參
}
public static void show(String str){//這邊的str便是形參
System.out.println(str);
}
}
數(shù)據(jù)類型...變量名
使用說明//class1.java
public class class1 {
public static void main(String[] args) {
show(1, "12", "34", "56");
}
public static void show(int i, String... str) {
for (String s : str) {
System.out.println(s);
}
}
}
權限修飾符(public、protected、default、private)權限修飾符 | 在類內部的訪問權限 | 在同一個包中的訪問權限 | 在不同的包中的訪問權限 | 在同一個項目中的訪問權限 |
private | 可以被訪問 | 不可以被訪問 | 不可以被訪問 | 不可以被訪問 |
default | 可以被訪問 | 可以被訪問 | 不可以被訪問 | 不可以被訪問 |
protected | 可以被訪問 | 可以被訪問 | 可以被訪問 | 不可以被訪問 |
public | 可以被訪問 | 可以被訪問 | 可以被訪問 | 可以被訪問 |
封裝應該將類中的一些內容隱藏掉,只允許在類內部被直接訪問,而在類外部只能通過方法調用的方式被訪問
封裝的作用//class1.java
public class class1 {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//class2.java
public class class2 {
public static void main(String[] args) {
class1 c1 = new class1();
c1.setAge(20);
System.out.println(c1.getAge());
//若是通過c1.age直接訪問類的成員變量,編譯器便會報錯,因為成員變量age是private類型,無法直接被外部訪問
}
}
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧