一、面向對象與面向過程
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();
}
}