天天看點

Java學習筆記(二):面向對象、構造方法、方法重載

一、面向對象與面向過程

C語言是一個面向過程程式設計語言,在面對程式設計問題時,C語言實作的思想角度是:解決這個問題需要哪些過程,及這些過程的進一步細分,最終形成一個個功能函數,通過組合、協調這些函數,最終實作這個過程。

Java是一個面向對象程式設計語言,在面對同樣的問題時,首先思考的是,問題本身由哪些”部件“(對象)組成;這些部件本身有哪些屬性(成員)和操作(方法):部件和部件之間有什麼内在聯系,以及部件是如何聯系起來的,最終也能實作目的。

面向對象程式設計思想的目标是代碼複用

二、類

面向對象程式設計思想的核心

1、類包含兩個要素:資料和操作

即類型,定義一個類,就等于産生了一種新的資料類型,與C語言中的struct異曲同工。但是類不單有資料,還有操作噢。

2、定義一個類:

class SimplePoint{
	int row;
	int col;
	
	void printPoint(){
	System.out.println("+row+","+col+");
	}
	void moveTo(int newRow,int newCol){
	row=newRow;
	col=newCol;
	}
}
           

上述代碼定義了兩個資料成員:row和col

兩個函數成員 printPoint()和moveTo()即類的方法

3、類的執行個體在Java中稱為:對象

通過這種方法才能産生一個執行個體:

4、類方法的調用:

三、權限修飾符

1、public 修飾的成員和方法,可以在類外任意通路;

2、private 修飾的成員和方法,隻能在類的内部進行通路;

通常情況下,類的成員都需要private保護,而類的方法都是public的,以便友善調用

(簡單介紹一下)

四、構造方法

按照自己的意願給類的成員賦初值

一個類如果沒有書寫構造方法,則Java的jvm在對該類執行個體化時,将自動執行一個由JVM提供的預設的構造過程;而且在這個過程中,會對類成員按如下規則賦初值:

0(byte類型、char類型、short類型、int類型和long類型)

0.0(float類型和double類型)

false(Boolean類型)

其他所有類類型對象,都将賦初值為null

構造方法的基本規則:

1、構造方法必須與類同名;

2、構造方法不能聲明其傳回值類型(void都不行);

3、構造方法隻能被JVM自動調用,使用者不能調用構造方法;

4、構造方法隻能在類執行個體化對象時,(被”new“)調用;

5、構造方法的主要目的,就是初始化對象的各成員的值;

new的内部操作

1、申請SimplePoint類的一個執行個體空間;

2、完成對該執行個體空間中各成員賦初值(調用構造方法);

3、将執行個體空間的首位址指派給對象pointone;

對象的本質就是指針變量

代碼執行個體:

public class Point {

	private int row;
	private int col;
	
	public Point() {

	}
	public Point(int row, int col) {
		setRow(row);
		setCol(col);
	}
	
	public Point(int row) {
		setRow(row);
		setCol(0);
	}

	public void setRow(int row) {
		if(row<=0||row>25) {
			row=1;
		}
		this.row=row;
	}

	public void setCol(int col) {
		if(col<0||col>80) {
			col=1;
		}
		this.col=col;
	}
	
	public void printPoint(){
		System.out.println("("+row+","+col+")");
	}
	
}
           
public class Test {

	public static void main(String[] args) {
		
		Point pointone =new Point();
		pointone.setRow(20);
		pointone.setCol(99);
		pointone.printPoint();
		
		Point pointtwo=new Point(13);
		pointtwo.printPoint();
		
		Point pointthree = new Point(5,10);
		pointthree.printPoint();
	}

}
           

五、方法的重載

方法重載的基本規則:

1、方法名稱相同;

2、參數個數或者參數類型不同;

3、傳回值類型的差異不是方法重載的決定因素;

4、構造方法也可以重載,隻要滿足前兩點規則;

代碼執行個體:

public class SimplePoint {
	private int row;
	private int col;
	
	public SimplePoint() {
	}
	
	public void setRow(int x) {
		if(x<0||x>25) {
			x=1; 
		}
		row=x;
	}
	
	public void setCol(int y) {
		if(y<0||y>80) {
			y=1;
		}
		col=y;
	}
	
	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 printPoint() {
		System.out.println("("+row+","+col+")");
	}
	
	public void moveTo(int newRow,int newCol) {
		row=newRow;
		col=newCol;
	}
}
           
public class DemoSimplePoint {

	public static void main(String[] args) {
		SimplePoint  pointone = new SimplePoint();
		pointone.setPoint(10, 20);
		System.out.println("示範雙參指派結果:");
		pointone.printPoint();
		
		pointone.setPoint(5);
		System.out.println("示範單參指派結果:");
		pointone.printPoint();
		
		SimplePoint pointtwo=new SimplePoint();
		System.out.println("示範 執行個體指派 結果:");
		pointtwo.setPoint(pointone);
		pointtwo.printPoint();
	}
}