Java,從一開始學習這門技術,我們就被注入了一個概念——“Java是一門面向對象編程語言。”是的,Java之所以簡單而具有優勢,就是因為面向對象所帶來的方便。這種方式免去了C++ 中反復而難以理解的指針和多繼承,“可以讓程序員以優雅的思維方式進行復雜的編程”。而這之中最為核心也是最基礎的部分就是類與對象。
一、對象
作為Java語言中最基礎的東西,我們有必要了解一下對象的概念。實際上生活中我們接觸的所有東西都可以被稱作為一個對象。比如你正在使用的瀏覽這篇文章的電子設備、你手邊正在被你使用的那個鼠標、我正在敲的鍵盤等,全都是對象。對象不是一個籠統的,類似于“桌子”、“椅子”這種代表一類事物的概念,而是類似于“那張桌子”、“這把椅子”這樣的具體的某一個事物。這就是對象。
二、類
類相當于之前我們所說的那個“籠統的概念”,就是具有共同特征的某一類東西。比如“桌子”、“電腦”、“顯卡”等。而類和對象的關系也很簡單——類是模板,對象是實物。
類的格式如下:
public class 類名(){//屬性訪問修飾符 數據類型 變量名;//方法訪問修飾符 返回值類型 方法名(數據類型 參數名,...){}}
三、類的屬性和方法
1、屬性
類的屬性就是我們在描述某個東西時所指出的這個東西的特點。
比如我們描述筆記本電腦,那么我們基本上會用“品牌”、“顏色”、“內存大小”、“顯卡類型”等幾個特點來描述它。那么如果這個時候我們把“筆記本電腦”當做一個類的話,那么它的屬性就是剛才我們所指出的那幾個特點。
2、方法
所謂方法,就是指一類事物的用途、行為或者功能。
還是以剛才我們說的筆記本電腦為例。那么筆記本電腦的用途比如“寫文章”、“學習”、“玩LOL”等,就是筆記本電腦這個類的方法。我們可以在程序中去調用這些方法以達到我們的目的。
3、構造方法
在Java中,任何變量在被使用前都必須先設置初值。Java提供的為類的成員變量賦初值的專門方法,就是構造方法。構造方法會在對象被實例化的時候被調用。
注意:構造方法名必須與類名完全一致;構造方法沒有返回值類型,連“void”也沒有;如果你沒有在一個類中定義構造方法,java會自動提供一個沒有任何形參的默認的構造方法。
這里我們定義一個簡單的“學生類”
public class Student{private String name;//姓名屬性,私有private int age;//年齡屬性,私有private int score;//學分屬性,私有/***構造函數,讀取姓名和年齡屬性*/public Student(String name,int age){this.name = name;this.age = age;}/***定義一個學習方法。每學習一次學分加1*/public void study(){score++;System.out.println(name+"正在學習中,學分是"+score);}
}
這就是一個簡單的類了。
四、方法重載
有些時候我們可以發現在特定的情況下有些對象會有一些其他對象沒有的屬性,這就導致有些類沒辦法通用。而再重新為這僅有的幾個對象建立一個類會比較麻煩,這種情況我們就需要用到方法的重載。
1、構造方法的重載
中國古典名著《西游記》中的孫悟空是從石頭里跳出來的,而其他所有人都是有父有母。這種情況下我們可以視為孫悟空的屬性和其他人物不一樣,這就需要在實例化孫悟空這個對象時加入一個不一樣的參數。
2、普通方法的重載
每個人都需要吃東西,但是早中晚三餐吃的東西不一樣。我們就需要對“吃”這個方法進行重載。
3、方法重載的條件:
方法名必須要完全一致;參數不同(個數、類型、順序至少有一個不同)。
五、this關鍵字
1、當參數名和屬性名相同的時候,Java會采用就近原則優先使用參數;如果要區分開來,那么可以使用this來區分,加上this.的表示屬性,否則表示參數。
2、this(參數值,…);調用當前類中對應參數的構造方法。
注意:this表示當前調用的方法的對象。誰在調用方法,那么方法中的this就表示該對象。
我們現在看一下如何實現方法的重載
public class Student{private String name;//姓名屬性,私有private int age;//年齡屬性,私有private int score;//學分屬性,私有/***構造函數,讀取姓名和年齡屬性*/public Student(String name,int age){this.name = name;this.age = age;System.out.println("有參數的構造方法");}/***構造方法的重載*/public Student(){System.out.println("沒有參數的構造方法");}/***定義一個學習方法。每學習一次學分加1*/public void study(){score++;System.out.println(name+"正在學習中,學分是"+score);}public void study(String book){System.out.println(name+"正在學習《"+book+"》中的內容");
}
}
定義一個用于運行的有主函數的類
public class manager{public static void main(String[] args) {Student stu = new Student("張三",18);//實例化一個對象for(int i=0;i<=5;i++){stu.study();//學習六次}stu.study("數字電路與模擬電路");//學習方法的重載}
}