java编写教师类输出_Java类和对象的区别和联系,超简单易懂!
在面向對象的編程語言中,類和對象必然是最核心的特性之一。本文主要介紹Java中的類和對象。
示例
以班級成員為例,班上有小紅、小明、小李,還有王老師、張老師和魏老師,我們認為他們都屬于“人類”的范疇。他們都有人類的基本屬性和行為。
細一步看,小紅小明還有小李,他們都是學生,因此我們說,他們都屬于學生,我們可以說這幾位同學都屬于學生類,他們都有學生類的基本屬性和行為。
王老師、張老師和魏老師呢?他們都屬于教師類,都擁有教師類的基本屬性和行為。
而我們通過代號指定的班級成員(如小紅或王老師),他們是一個具體的,而不是抽象的目標,我們視他們為一個個的對象。
因此,我們可以得到這樣的一張圖:
看到這里,相信大家已經對類和對象有了自己初步的概念。我是這樣看待類和對象的:類是對象的抽象,對象是類的示例。
類(Class)
Java中的關鍵字Class就是我們所稱的類。我認為這個翻譯真的太妙了!我們來看看漢字中“類”字的定義(取自百度漢語):
1.許多相似或相同事物的綜合:種~。分~。同~。
2.用于性質或特征相同或相似的事物:分成幾~。兩~性質的問題。
3.類似:~人猿。~新星。畫虎不成反~狗。
4.姓。
以學生類為例,我們將所有學生都有的屬性和行為(方法)抽象出來,我們假設所有的學生都有
三個屬性:學號、姓名、年齡。
三個行為:唱、跳、Rap (現在的學生還真是多才多藝啊…)
于是,可以得到一個學生類:
public class Student {
/********* 以下為Student的屬性 **********/
int stuId; //學號
String name; //姓名
int age; //年齡
/********* 以下為Student的行為 **********/
//唱
public void sing(){
System.out.println(stuId + "號同學唱了一首歌!");
}
//跳
public void dance(){
System.out.println(name + "同學跳了一支舞!");
}
//Rap
public void rap(){
System.out.println("這位同學秀了一段Rap!");
}
}
至此,我們設計了一個簡單的類,很簡單吧!
Java中,類的設計其實是在給對象的創建作鋪墊,正如《Java核心技術 卷Ⅰ 》中定義的:
類是構造對象的模板或藍圖
對象(Object)
如果是初次了解可能會覺得有些困難,加把勁!相信自己!
在示例的學生類中,就存在著三個對象:小紅、小李、小明。他們都擁有學生類所有的屬性和行為。可以說:有類才有對象,對象是基于類產生的。
1.對象創建(實例化)
在程序設計中,如果想要使用對象,就需要對它進行創建:
new Student();
此處的new操作符,代表創建對象的任務,那么要創建什么類型的對象呢?需要在new后邊表示出來,此處選擇我們之前設計好的Student類。
至此,程序創建了一個Student類的對象。其中,Student()是一個構造方法(將在下文介紹,此處僅了解)
2.聲明變量
下一步,為了更好的區分創建的對象,我們會給對象取一個名字。在Java中,使用變量來給對象命名,同時需要告訴編譯器這個對象的類型(如同int a一般)
Student stu1;
至此,程序聲明了一個Student類型的變量stu1。這個變量有時也被稱為對象變量。
有關對象和對象變量的相關知識,本文不詳細講述,有興趣的可以看下我的文章:對象和對象變量
3.變量賦值
再用我們創建好的對象,給相應變量賦值
Student stu1 = new Student();
之后,對變量stu1進行操作的操作,即是對該對象進行的操作。這個變量stu1即成為了這個對象的引用變量,stu1可以視為對象的名稱。
至此,我們完成了對象創建的工作(有的地方也稱為對象的實例化或實例化對象),接下來開始嘗試進行對象的相關使用操作。
4.對象操作
在Java中,我們使用“[ 對象名 ] + [ . ] + [ 屬性名 ]” 或 “[ 對象名 ] + [ . ] + [ 方法名 ]” 的方式來操作。
我們已經知道,我們設計出的學生類都會一手Rap的絕活,現在我們想讓stu1來一段精彩Rap秀,于是可以這樣做
stu1.Rap();//輸出結果:這位同學秀了一段Rap!
那么,如果我們想看一下這個stu1的年齡呢,很自然的,我們會想要這樣做:
System.out.println(stu1.age);
會得到什么結果呢?
0
0?這顯然是不正確的,回響一下,我們在創建對象的時候,并沒有說明這個對象的屬性(學號、姓名、年齡)。所以程序并不知道這個對象的屬性值,它們都會被設置為默認的初始值。Java中提供了創建對象并給對象賦值的特殊方法:構造方法(也稱為構造器)
構造方法
Java類中存在這樣的方法,它的名字與類名相同,在創建對象時使用。它可在創建對象時定義對象的初始狀態,用于構造一個對象。它被稱為構造方法(或構造器)。同時可分為無參構造器(如:Student())和有參構造器(如:Student(String a,int b))。
在上文中,我們使用了 “new Student()” 這樣的操作,new代表創建對象的任務,而由誰去執行呢?由后邊的構造器執行,也就是說:創建對象的其實是由構造器來構造對象。
1.無參構造器:不包含參數的構造器
在Student類中,我們并沒有書寫出一個Student()構造器,但依舊可以使用這個構造器,這是因為:
在編寫一個類時未編寫構造器時,系統將會提供一個默認的無參構造器
在默認的無參構造器中,系統將會給對象的屬性設置默認的初始值,此處int stuId = 0; String name = null; int age = 0;
因此,當我們打印stu1.age的時候,輸出結果為0。
2.有參構造器:有參數的構造器
在無參構造器中,并不能夠在創建對象時實現對其賦值。實際上,我們通常都會在設計類時,書寫一個有參構造器。如在Student類中,就可以包含這段代碼:
public Student(int a, String b, int c) {
stuId = a;
name = b;
age = c;
}
現在,假設要創建一個:學號為101,姓名為小李,年齡為13的對象,可以采取這樣的方式:
Student stu1 = new Student(101, "小李", 13);
此時,構造器在創建對象時,將按照我們輸入的數據,自動進行對象的初始化賦值操作:
stuId = 001;
name = "小李";
age = 13;
至此,一個學號為101,姓名為小李,年齡為13的同學便創建好了。我們輸出測試一下:
System.out.println("我們創建了一個:" + stu1.age + "歲的" + stu1.name + "同學,他的學號為:" + stu1.stuId + "。");
輸出結果為:
我們創建了一個:13歲的小李同學,他的學號為:101。
實際上,當我們書寫構造器時,系統將會自動在構造器的第一行填上 super(); 語句,代表調用父類的默認無參構造器。這里先只做了解,相關細節我會在后文中介紹。
總結一下:
1.構造器與類同名
2.構造器在new創建對象時使用
3.構造器沒有返回值
4.構造器可以有0個或多個參數
5.每個類可以有一個或多個構造器
6.當未指名構造器時,系統將自動提供一個無參構造器
至此,我們已經完成了簡單的類的設計和對象的創建,同時還嘗試了對象方法的使用。
下面貼出相關代碼:
Student.java
public class Student {
/********* 以下為Student的屬性 **********/
int stuId; //學號
String name; //姓名
int age; //年齡
public Student(){
}
public Student(int a, String b, int c) {
stuId = a;
name = b;
age = c;
}
/********* 以下為Student的行為 **********/
//唱
public void sing(){
System.out.println(stuId + "號同學唱了一首歌!");
}
//跳
public void dance(){
System.out.println(name + "同學跳了一支舞!");
}
//Rap
public void rap(){
System.out.println("這位同學秀了一段Rap!");
}
}
Test.java
public class Test {
public static void main(String[] args) {
//創建對象
Student stu1 = new Student(101, "小李", 13);
Student stu2 = new Student(102, "小紅", 12);
Student stu3 = new Student();
//對象引用
System.out.println("我們創建了一個:" + stu1.age + "歲的" + stu1.name + "同學。他的學號為:" + stu1.stuId + "。");
stu2.dance();
stu3.rap();
}
}
總結
以上是生活随笔為你收集整理的java编写教师类输出_Java类和对象的区别和联系,超简单易懂!的全部內容,希望文章能夠幫你解決所遇到的問題。