Java基礎——面向物件程式設計(過載、重寫、封裝)
阿新 • • 發佈:2018-11-05
Java基礎——面向物件程式設計(過載、重寫)
Java基礎知識圖解
重寫與過載
重寫:
引數與返回值相同,許可權不能小於所覆蓋的方法,丟擲的異常不能大於多於所覆蓋的方法。
過載
方法名相同,引數不同(數量、型別、順序),與訪問許可權修飾符返回型別無關也就是可以不同。
可變個數形參
格式:對於方法的形參: 資料型別 … 形參名
可變個數的形參的方法與同名的方法之間構成過載
可變個數的形參在呼叫時,個數從0開始,到無窮多個都可以。
使用可變多個形參的方法與方法的形參使用陣列是一致的。
若方法中存在可變個數的形參,那麼一定要宣告在方法形參的最後。
在一個方法中,最多宣告一個可變個數的形參。
//可變個數的形參的方法,與陣列不是過載他們是一樣的,重名後編譯器報錯 public void sayHello(String... args) { for (int i = 0; i < args.length; i++) { System.out.println(args[i] + "$"); } } public void sayHello1(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println(args[i]); } }
方法的引數傳遞(重點、難點)
形參:方法宣告時,方法小括號內的引數
實參:呼叫方法時,實際傳入的引數的值
規則:java中的引數傳遞機制:值傳遞機制
- 形參是基本資料型別的:將實參的值傳遞給形參的基本資料型別的變數
- 形參是引用資料型別的:將實參的引用型別變數的值(對應的堆空間的物件實體的首地址值)傳遞給形參的引用型別變數。
public static void main(String[] args) { int i = 10; int j = 5; System.out.println("i:" + i + " j:" + j);//i : 10 j : 5 //交換變數i與j的值 int temp = i; i = j; j = temp; System.out.println("i:" + i + " j:" + j);//i : 5 j : 10 }
public class TestArgsTransfer {
public static void main(String[] args) {
TestArgsTransfer tt = new TestArgsTransfer();
int i = 10;
int j = 5;
System.out.println("i:" + i + " j:" + j);//i : 10 j : 5
// //交換變數i與j的值
// int temp = i;
// i = j;
// j = temp;
tt.swap(i, j);//將i的值傳遞給m,j的值傳遞給n
System.out.println("i:" + i + " j:" + j);//i : 10 j : 5
}
//定義一個方法,交換兩個變數的值
public void swap(int m, int n) {
int temp = m;
m = n;
n = temp;
System.out.println("m:" + m + " n:" + n);
}
}
public class TestArgsTransfer1 {
public static void main(String[] args) {
TestArgsTransfer1 tt = new TestArgsTransfer1();
DataSwap ds = new DataSwap();
System.out.println("ds.i:" + ds.i + " ds.j:" + ds.j);
tt.swap(ds);
System.out.println(ds);
System.out.println("ds.i:" + ds.i + " ds.j:" + ds.j);
}
//交換元素的值
public void swap(DataSwap d) {
int temp = d.i;
d.i = d.j;
d.j = temp;
System.out.println(d);//列印引用變數d的值
}
}
class DataSwap {
int i = 10;
int j = 5;
}
封裝
目的:為了維護程式安全穩定性,保護底層資料;
行為:一切為了維護程式的安全穩定性,保護底層資料的行為,都稱之為封裝。
具體體現:
- 私有屬性,公有方法
- 私有構造,靜態方法返回類物件
- 內部類:並列內部類包含內部類
訪問許可權修飾符
注意:
- 對於class的許可權修飾只可以用public和default(預設)。
- public類可以在任意地方被訪問。
- default類只可以被同一個包內部的類訪問。
構造方法
構造器的作用:
- 建立物件
String str = new String("構造方法為屬性賦值")
- 給建立的物件的屬性賦值
public Student() {
name = "為name賦值";
}
構造器的機制:
- 設計類時,若不顯式宣告類的構造器的話,程式會預設提供一個空參的構造器. 一旦顯式的定義類的構造器,那麼預設的構造器就不再提供。
- 如何宣告類的構造器。格式:許可權修飾符 類名(形參){ }
- 類的多個構造器之間構成過載
類物件的屬性賦值的先後順序:
- 屬性的預設初始化 private String name;
- 屬性的顯式初始化 private String name = “呵呵”;
- 通過構造器給屬性初始化
- 通過"物件.方法"的方式給屬性賦值
編譯器自動生成的構造方法
public student (String name){
this.name = name;
}
理解:this.name指的是student中的屬性name,然後將引數name賦值於屬性name.
日記
臨沂出差七日遊,我要走了,欠我一頓酒的兄弟,還有那位欠我飯的小姐姐。
前段時間在耳邊有人說臨沂很窮,我並沒有感覺到窮因為菏澤比臨沂更窮!你有沒有能力在你認為很窮的地方,憑藉自己的實力毫不費力買房買車並結婚生子贍養父母嗎,如果沒有你不覺得可笑嗎?