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