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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

构造方法 与 方法重载

發布時間:2023/12/29 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 构造方法 与 方法重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一章博文《Java 基礎講解》中,我們了解了JAVA編程語言的優點、基本輸出方法、以及八大基本類型 和 類 的概念。那么,本人在這一篇博文中位同學們介紹兩個在JAVA語言中兩種十分常見的手段——構造方法 和 方法重載。

首先,本人來講解一下方法: JAVA語言中的 方法,就相當于我們在C語言中的 函數。
(在我們學習JAVA的前幾節課,我想聲明一點:我們學習C語言雖然有很多和JAVA語言是一致的,但是,我們要盡快將術語更正過來,不能一味地用在C語言中的習慣,只有不斷汲取優良的知識,并改掉之前的略劣的思想,我們才能進步)

在了解了“方法”之后,我們現在就進入主題。

構造方法:

什么是“構造方法”呢?
在這里,本人通過一個例子來為同學們介紹。
還是上節課的屏幕點坐標的處理,我們先將上節課的代碼拿出來:

SimplePoint.java:

class SimplePoint {
	int row;
	int col;

	void showPoint() {
		System.out.println("(" + row + "," + col + ")");
	}
}

DemoSimplePoint.java:

class SimplePointDemo {
	public static void main(String[] arg) {
		SimplePoint b = new SimplePoint();	
		b.row = 10;
		b.col = 20;
		b.showPoint();
	}
}

相信學習過上節課的同學們都不會對這里的代碼產生任何疑惑。
那么我現在來提出一個要求:
要求在我們定義一個類的實例時,就要對其的所有成員賦值。
這個要求,對于學到目前課程的同學們來說,幾乎是不可能完成的,那么,現在我來介紹一個方法,來解決這個問題——構造方法

我先來介紹一下構造方法的規則:

構造方法的規則
1.構造方法必須與類同名;
2.構造方法不能聲明返回值(void也不行);
3.用戶不能調用構造方法;
4.構造方法在new時被調用;
5.構造方法的主要目的,是初始化各成員的值( 若一個類如果沒有寫構造方法的話,就默認如下構造方法: 對所有成員以此方式賦初值: 0(byte、char、short、int、long類型)
0.0(float、double類型) false(boolean類型) null(類類型,這里可以理解類類型的變量為“指針”) )

那么,我們現在來用代碼實現一下上面的要求:
SimplePoint.java:

public class  SimplePoint{
	private int row;	//private表示這個變量只能在該類中被調用。用于防止外類修改該成員
	private int col;

	public MecPoint(int x, int y) {	//這就是我們所謂的“構造方法”
		setRow(x);
		setCol(y);
	}

	public void setRow(int x) {
		if(x <= 1 || x > 25) {	//對x范圍進行約束
			x = 12;
		}
		row = x;
	} 
	
	public void setCol(int y) {
		if(y <= 1 || y > 80) {	//對y范圍進行約束
			y = 40;
		}
		col = y;
	}

	public void printPoint() {
		System.out.println("(" + row + "," + col +")");
	}
}

那么,以上就是構造方法的例子和規則了。
現在我們來進入第二個課題——方法重載吧!

方法重載:

方法重載,這個知識點,真的讓我稍微理解到了一些“面向對象”的感覺,因為它可以讓你重復定義一個方法,對于重載的不同方法,也有不同的處理方式,這就意味著,我們要求用戶輸入的內容不再單一,而是幾乎能滿足各種合法輸入內容.
說了這么多,現在我來介紹下“方法重載”的規則吧:

方法重載的規則
(1)方法的名稱相同;
(2)參數個數 和 參數類型 不同;
(3)返回值類型的差異并不是決定性因素; ((1)和(2)是決定性因素)
(4)只要滿足(1)和(2),構造方法也可以重載。

好了,還是接上面的例子,我們現在要求用戶輸入一個參數還是兩個參數,甚至無參或者參數是一個對象(類型是一個 類 的變量)也可以,那么相關代碼如下:

SimplePoint.java:

public class  SimplePoint{
	private int row;	//private表示這個變量只能在該類中被調用。用于防止外類修改該成員
	private int col;

	public SimplePoint() {				//無參構造方法
		System.out.println("This is none argument constructor!");
		setRow(0);
		setCol(0);
	}

	public SimplePoint(int x, int y) {	//2個參數的構造方法
		System.out.println("This is 2 argument constructor!");	
		setRow(x);
		setCol(y);
	}

	public SimplePoint(int x) {			//一個參數的構造方法
		System.out.println("This is signle argument constructor!");	
		setRow(x);
		setCol(0);
	}

	public SimplePoint(SimplePoint point) {	//對象作為參數的構造方法
		System.out.println("This is object argument constructor!");	
		setRow(point.row);
		setCol(point.col);
	}

	public void setPoint(int x, int y) {
		setRow(x);
		setCol(y);
	}

	public void setPoint(int x) {
		setPoint(x, 0);
	}

	public void setPoint(SimplePoint source) {
		setPoint(source.row, source.col);
	}

	public void setRow(int x) {
		if(x <= 1 || x > 25) {	//對x范圍進行約束
			x = 12;
		}
		row = x;
	} 
	
	public void setCol(int y) {
		if(y <= 1 || y > 80) {	//對y范圍進行約束
			y = 40;
		}
		col = y;
	}

	public void printPoint() {
		System.out.println("(" + row + "," + col +")");
	}
}

由于本人在本人的《數據結構與算法》專欄提到過,我們寫的代碼,要邏輯清晰,方法(函數)功能單一,且總功能齊全,所以我們現在來優化一下上述的兩個文件的代碼:
MecPoint.java:
(由于本人的技術都是微易碼教主傾囊相授,所以本人將該文件命名為MecPoint.java)

public class  MecPoint{
	private int row;	//private表示這個變量只能在該類中被調用。用于防止外類修改該成員
	private int col;

	public final int MIN_ROW = 1;
	public final int MAX_ROW = 25;
	public final int DEFAULT_ROW = 12;
	public final int MIN_COL = 1;
	public final int MAX_COL = 80;		//屏幕點坐標范圍:共25行、80列
	public final int DEFAULT_COL = 40;  //默認屏幕點坐標錯誤時,設為中值	

	public MecPoint() {
		System.out.println("This is none argument constructor!");
		setRow(0);
		setCol(0);
	}

	public MecPoint(int x, int y) {
		System.out.println("This is 2 argument constructor!");
		setRow(x);
		setCol(y);
	}

	public MecPoint(int x) {	
		System.out.println("This is signle argument constructor!");	
		setRow(x);
		setCol(0);
	}

	public MecPoint(MecPoint point) {
		System.out.println("This is object argument constructor!");	
		setRow(point.row);
		setCol(point.col);
	}
	
	public void setPoint(int x, int y) {
		setRow(x);
		setCol(y);
	}

	public void setPoint(int x) {
		setPoint(x, 0);
	}

	public void setPoint(MecPoint source) {
		setPoint(source.row, source.col);
	}

	public void setRow(int x) {
		if(x <= MIN_ROW || x > MAX_ROW) {	//對x范圍進行約束
			x = DEFAULT_ROW;
		}
		row = x;
	} 

	public int getRow() {
		return row;
	}
	
	public void setCol(int y) {
		if(y <= MIN_COL || y > MAX_COL) {	//對y范圍進行約束
			y = DEFAULT_COL;
		}
		col = y;
	}

	public int getCol() {
		return col;
	}

	public void printPoint() {
		System.out.println("(" + row + "," + col +")");
	}
}

可以看到,我新加入了三個函數:讀取橫坐標、讀取縱坐標、移動坐標函數,
并且編寫了好多類型為“public final int”的變量,對于這里的類型,可以理解為是int型的“宏”(這個知識點本人將在今后的博文中進行詳細講解),這樣我們的代碼邏輯就十分清晰了!

那么,現在,具體的兩個課題都已經講解完成了,現在本人來展示下,具體怎么調用這些方法:

DemoMecPoint.java:

public class  DemoMecPoint{
	public static void main(String[] args) {
		MecPoint pointFirst = new MecPoint();
		System.out.println("演示 無參 構造結果:");
		pointFirst.printPoint();

		MecPoint pointSecond = new MecPoint(5, -7);
		System.out.println("演示 雙參 構造結果:");
		pointSecond.printPoint();

		MecPoint pointThird = new MecPoint(20);
		System.out.println("演示 單參 構造結果:");
		pointThird.printPoint();

		MecPoint pointForth = new MecPoint(pointFirst);
		System.out.println("演示 對象 構造結果:");
		pointForth.printPoint();
	}
}

那么,現在本人來展示下代碼的運行結果:

那么,到目前為止,這篇博文的所有內容就講解完成了。
JAVA語言,相對于剛接觸的同學來說,可能還會有些不適應,但是,隨著深入學習,我敢保證,學懂了JAVA,同學們就會非常抵觸C語言,因為JAVA實在太自由、太方便了!

若是對本片博文中的 fianl 關鍵字和我們一直在使用的 static 關鍵字有疑問的同學,請觀看本人的博文——《詳解 final 和 static》

總結

以上是生活随笔為你收集整理的构造方法 与 方法重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。