java類的定義與使用舉例詳解
一、概念
- 我們不能將一個(gè)事物稱之為一類事物,例如一只鳥我們不能稱為鳥類,但是我們需要給一類事物統(tǒng)稱,例如大雁,麻雀,燕子,統(tǒng)稱為鳥類,在Java中我們對這種統(tǒng)稱需要用到類的概念。
- 類是同一類事物的統(tǒng)稱,將現(xiàn)實(shí)世界的一個(gè)事物抽象成對象,類就是這類事物的統(tǒng)稱,如鳥類,人類,家禽類。類是構(gòu)造對象時(shí)所依賴的規(guī)范。一只鳥會(huì)有一對翅膀,他可以用這對翅膀進(jìn)行飛行,基本上所有的鳥類都有“有翅膀”這個(gè)特性和用這對翅膀飛行的功能,這樣的具有相同特性和行為的一類事物就稱為類,類的思想就是這樣的。
- 類是封裝對象的屬性和行為的載體,在Java語言中,類對象的行為是以方法的形式定義的,對象的屬性是以成員變量的形式定義的,所以類包括對象的屬性和方法。
二、使用
1.成員變量
對象的屬性也稱為成員變量,成員變量可以是任意類型,成員變量的作用域是整個(gè)類
定義一個(gè)學(xué)生類:
public class Student {
private String name;//name屬性
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
上面定義了一個(gè)name屬性并寫了它的get和set方法。
2.成員方法
在剛才例子中的成員方法就是setName和getName,一個(gè)是設(shè)置名字一個(gè)是獲取名字的方法。成員方法中可以設(shè)置任何類型的參數(shù),也可以在成員方法中調(diào)用其他成員方法。
上面的this指的是自己,意思就是調(diào)用自己內(nèi)部的屬性或者方法。
3.權(quán)限修飾符
public,private,default,protected是java的四大修飾符,下面分別主要介紹四者之間的區(qū)別:
- public是權(quán)限最大的修飾符,他可以修飾類,成員變量,成員方法,構(gòu)造方法。被public修飾后,可以再任何一個(gè)類中,不管同不同包,任意使用。
- private可以修飾成員變量,成員方法,構(gòu)造方法,不能修飾類(此刻指的是外部類,內(nèi)部類不加以考慮)。被private修飾的成員只能在其修飾的本類中訪問,在其他類中不能調(diào)用,但是被private修飾的成員可以通過set和get方法向外界提供訪問方式。
- defalut即不寫任何關(guān)鍵字,它可以修飾類,成員變量,成員方法,構(gòu)造方法。被默認(rèn)權(quán)限修飾后,其只能被本類以及同包下的其他類訪問。
- protected可以修飾成員變量,成員方法,構(gòu)造方法,但不能修飾類(此處指的是外部類,內(nèi)部類不加以考慮)。被protected修飾后,只能被同包下的其他類訪問。如果不同包下的類要訪問被protected修飾的成員,這個(gè)類必須是其子類。
還有一個(gè)是final
final 修飾類,類不能被繼承,修飾變量只能賦值一次,修飾方法方法不能被重寫
| 修飾符 | 本類 | 同一個(gè)包的類 | 其他包的類 |
|---|---|---|---|
| public | 可訪問 | 可訪問 | 可訪問 |
| private | 可訪問 | 不可訪問 | 不可訪問 |
| protected | 可訪問 | 可訪問 | 不可訪問 |
4.靜態(tài)方法
定義了靜態(tài)方法就可以直接用對象.方法來直接調(diào)用,就不需要先創(chuàng)建對象再調(diào)用方法了,靜態(tài)變量和靜態(tài)方法通常是為了提供共享數(shù)據(jù)或方法,如下:
public class test {
public static void main(String[] args) {
System.out.println(Student.name);//使用 對象.屬性 調(diào)用
Student.method();//使用 對象.方法 調(diào)用
}
}
class Student {
static String name="王五";
public static void method(){
System.out.println("這是一個(gè)靜態(tài)方法");
}
}

以上代碼定義了一個(gè)靜態(tài)屬性和靜態(tài)方法,通過Student.屬性或者Student.方法來調(diào)用,就不需要先new對象再調(diào)用了
三、重寫toString方法
其實(shí)對于一般的對象來說都會(huì)有這個(gè)方法,這個(gè)方法的目的,主要就是將對象按字符串的方式輸出出來,用白話說就是:使用文字描述這個(gè)對象里各個(gè)變量是什么值 ,這個(gè)變量是什么類型的變量等 ,并且任何類都從Object繼承了這個(gè)方法,你不重寫toString()方法的話輸出的就是一個(gè)內(nèi)存地址,也就是哈希碼值。并不是輸出這個(gè)類的各個(gè)變量的值,記得不重寫好像只打印對象的類型而已。
返回的是 getClass().getName() + “@” +Integer.toHexString(hashCode());
也就是 類名 + @ +hashCode的值
比如下面的例子:
public class test {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("zhangsan");
stu.setAge(18);
System.out.println(stu);
}
}
class Student {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
}
輸出:

上面就是沒有重寫tostring方法打印出來的東西,是什么我們也看不懂,只知道它是個(gè)對象的地址,不利于我們觀看
下面是重寫了toString方法的:
public class test {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("zhangsan");
stu.setAge(18);
System.out.println(stu);
}
}
class Student {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String toString() {//重寫方法
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
輸出結(jié)果:

這個(gè)結(jié)果就看起來很舒服,我們就能看到剛才自己傳的有哪些值。
注:打印一個(gè)對象,可以直接System.out.println(stu)其實(shí)println方法內(nèi)部會(huì)自動(dòng)調(diào)用stu 的 toString() 方法。
總結(jié)
到此這篇關(guān)于java類的定義與使用的文章就介紹到這了,更多相關(guān)java類定義內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis-Plus條件構(gòu)造器的select用法解讀
Mybatis-Plus條件構(gòu)造器的select方法可以避免查詢?nèi)哂嘧侄?它支持查詢除指定字段以外的所有字段、指定字段以及結(jié)合聚合函數(shù)查詢,如查詢各個(gè)部門員工的平均年齡并按部門ID降序排序,此方法能有效提高查詢效率2026-04-04
java實(shí)現(xiàn)301跳轉(zhuǎn)和重定向的方法
301跳轉(zhuǎn)和重定向是做項(xiàng)目的時(shí)候經(jīng)常需要用到的,本文給大家分享的是在java中301跳轉(zhuǎn)和重定向的方法,需要的小伙伴參考下吧。2015-03-03
Java?集合框架底層數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)深度解析(示例詳解)
Java 集合框架(Java Collections Framework, JCF)是支撐高效數(shù)據(jù)處理的核心組件,其底層數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)直接影響性能與適用場景,這篇文章主要介紹Java集合框架底層數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)深度解析,需要的朋友可以參考下2025-06-06
解決bean對象注入報(bào)錯(cuò):Field in required a bean&nb
這篇文章主要介紹了解決bean對象注入報(bào)錯(cuò):Field in required a bean of type‘‘that could not be found.問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
springboot oauth2實(shí)現(xiàn)單點(diǎn)登錄實(shí)例
我們見過的很多網(wǎng)站,容許使用第三方賬號(hào)登錄,oauth2是用來做三方登錄的,本文就詳細(xì)的介紹springboot oauth2實(shí)現(xiàn)單點(diǎn)登錄實(shí)例,具有一定的參考價(jià)值,感興趣的可以了解一下2022-01-01
Java_異常類(錯(cuò)誤和異常,兩者的區(qū)別介紹)
下面小編就為大家?guī)硪黄狫ava_異常類(錯(cuò)誤和異常,兩者的區(qū)別介紹) 。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
詳解Spring學(xué)習(xí)之編程式事務(wù)管理
本篇文章主要介紹了詳解Spring學(xué)習(xí)之編程式事務(wù)管理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
java 過濾器filter防sql注入的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄猨ava 過濾器filter防sql注入的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
Mybatis整合達(dá)夢數(shù)據(jù)庫的完整步驟記錄
作為國產(chǎn)數(shù)據(jù)庫,達(dá)夢做的不錯(cuò),提供的遷移工具也相當(dāng)不錯(cuò),下面這篇文章主要給大家介紹了關(guān)于Mybatis整合達(dá)夢數(shù)據(jù)庫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

