1.什么是對象?
答:萬物皆對象;
2.什么是對象的實質?舉例說明
答:對象的實質是屬性和行為。
例1).張三
屬性:姓名、性別、身高、民族……
行為:跑、跳、工作、唱歌
例2).我的招商銀行一卡通
屬性:賬號、密碼、余額……
行為:存款、取款、轉賬……
3.什么是類?為什么要使用類?
答:1).類是具有共同屬性和行為的對象集合。
2).類定義了對象的屬性和方法。
3).通過類可以實例化多個該類的對象,每個對象的屬性值不同,可以說類好比設計圖紙,而對象好比根據圖紙建設出來的多棟樓房。
4).類是Java程序的基本組成單位。
4.什么是面向對象?如何在Java中使用面向對象的思想?
答:1).面向對象的思想已經不僅僅是編程思想,已經擴展到設計、測試等各個方面。
2).面向對象指的是以對象為基本單位去分析、設計以及實現系統。
3).Java具備描述對象以及對象之間關系的能力,因此稱為面向對象的語言。
*分析過程先有對象后有類;開發過程先有類后有對象。
5.類的基本結構包含哪些內容?舉例說明
答:1).屬性:對象數據的描述;
2).方法:對象的行為;(可以做的事情)
3).構造方法:用於實例化對象;
4).內部類:(inner class)即在類體中聲明的類。
5).塊:分為靜態塊,實例塊
其中屬性、方法、構造方法是經常使用的元素,而塊、內部類就使用的比較少。
例:public class Person{
String name; //姓名
Int age; 屬性
/**
*吃的方法
*/
Public void eat(){
System.out.println(“吃的真香!!!”); 方法
}
Public void speak(){
System.out.println(“說得真好聽!!!”);
}
Public Person(){// 創建一個對象時需要的方法}
構造方法
{
System.out.println(“我是實例塊”);
}
Static{ 塊
System.out.println(“我是靜態塊”);
}
Class InnerClass{
} 內部類
}
6. 什么是類的聲明形式?包含哪些內容?
答:類的聲明形式(【】中是可選項,即可有可無)
【訪問權限修飾符】【修飾符】 class 類名{
}
7.為什么要使用類?舉例說明
答:類的作用:累就是一個模板,定義多個對象共同的屬性和方法。
例:public class Student{
Private String name;
public void study(){
}
}
8.什么是屬性?如何使用屬性?舉例說明
答:1).屬性即對象的數據;
2).注意:屬性又稱為成員變量,是聲明在類中的變量,在方法體中聲明的變量稱為局部變量或臨時變量,后續詳細學習。
3).屬性的聲明方式
【訪問權限修飾符】【修飾符】數據類型 屬性名【=初值】
例:private String name;
Private double salary;
Private static int count = 0;
9.如何使用方法?
答:1).Java類中的方法聲明形式(【】中的內容是可選項,即可有可無)
【訪問權限修飾符】【修飾符】返回值 數據類型 方法名(形式參數列表){
執行語句;
return 返回值;
}
2).方法即對象行為。
10.方法都包含哪些部分?分別是什么?
答:1).什么是方法?
*方法就是定義在類中具有特定功能的一段獨立的小程序
*方法也稱為函數
2).訪問權限修飾符及修飾符
*訪問權限控制方法被調用的范圍
*修飾符包括static/final/abstract/synchronized
*都在后續學習中詳細學習
3).返回值類型
*方法運行后的返回結果的數據類型,如果沒有返回值使用void。
4).參數類型
*形式參數的數據類型。
5).形式參數
*就是一個變量,用於存儲調用方法時傳遞給方法的實際參數。
6).return
*用於結束方法。
7).返回值
*該方法執行后的結果,該結果會返回給調用者。
11.在定義方法時需要注意哪些事項?
注意:*沒有返回值類型用void關鍵字來表示。
*return的后面直接用;號結束,return可以省略不寫。
方法的特點:
1).定義方法可以將功能代碼進行封裝。
2).便於該功能進行復用。
3).方法只有被調用才會被執行。
4).方法的出現提高代碼的復用性。
5).方法若沒有返回值,則用關鍵字void表示,
那么該方法中的return語句如果在最后一行
可以省略不寫。
6).方法中可以調用方法,不可以在方法內部定義方法。
7).定義方法時,方法的結果應返回給調用者,交由調用者來處理。
12.在定義方法時需要思考哪幾點?分別是什么?
答:1).方法是否有返回結果,如果有,返回什么類型的結果?
2).明確方法是否需要參數,如果需要,需要幾個什么類型的參數?
3).方法如何才能正確得到想要的結果?
13.什么是方法重載?舉例說明
答:1).在Java中如果有多個同名但是不同參數的方法就稱為“方法的重載”;
2).編譯器會根據調用時傳遞的實際參數自動判斷具體調用的是哪個重載方法;
例:/*add方法的重載*/
Int add(int x, int c){……}
Float add(float x, int c){……}
Double add(double x, double x){……}
Long add(int x, int x, int x){……}
14.什么是方法重載的三大原則?
答:1).方法名相同;
2).參數不同(三個方面:數量不同/類型不同/順序不同);
3).同一作用域;
/*錯誤的方法重載*/
void fun(int x){……};
int fun(int x){……};
注意:方法重載跟方法的返回值類型沒有任何關系。也就是說,只有返回值不同的方法不能構成重載。
15.什么是方法重載的作用域規則?
答:只有屬於同一作用域范圍內的方法才能構成重載。
例:class First class Second
{ {
…… ……
Public void show() public void show(int x)
{ {
…… ……
} }
…… ……
} }
**注意:請勿將功能完全不一樣的方法進行重載!
16.為什么要使用構造方法?
答:1).要想使用Java類,必須創建類的對象,即對類進行實例化。而創建對象就必須使用構造方法。因此,構造方法幾乎是一個類必有的元素。
2).構造方法的作用:用來對類進行實例化,及創建對象。
17.如何聲明構造方法?舉例說明
答:【訪問權限修飾符】類名(形式參數列表){方法體}
例:public class Car {
private String color;
private double price;
public Car(){
}
Public Car(String color){
this.color = color;
}
Public Car(String color,double price){
this.color = color;
this.price = price;
}
}
18.構造方法與方法有什么區別?
答:*構造方法
1).是用在實例化對象的時候調用的
2).沒有返回值,連void都沒有
3).方法名必須與類名相同
4).不能使用修飾符,包括static、final、abstract
*方法
1).分靜態方法和非靜態方法
2).可以使用修飾符,包括static、final、abstract
3).靜態方法可用類名直接調用,非靜態方法要用對象調用(后續學習)
4).返回值可有可無,如果沒有聲明時要加void
5).方法名最好不跟類名一樣
19.為什么創建了類后,不寫構造方法,依然可以使用new進行實例化呢?
答:任何一個Java類都默認有一個無參構造方法。也就是說,即使類中沒有聲明無參的構造方法,照樣可以直接使用沒有參數的構造方法。
然而,只要在一個java類中定義了一個構造方法后,默認的無參構造方法即失效。
20.什么是方法重載?
答:在一個類中,如果有多個同名但是不同參的方法,稱為“方法重載(overload)”。所謂不同參,可能是形式參數的個數不同,或者類型不同,順序不同。方法重載能夠增強程序的可讀性。
21.為什么需要使用構造方法重載?
答:在實際開發中,初始化對象時會傳不同的參數,因此需要在一個類中定義多個構造方法,即進行構造方法重載。
例:public Cars(String color){
this.color = color;
}
public Cars(String color, double price){
this.color = color;
this.price = price;
}
22.在使用構造方法重載時需要注意哪些事項?舉例說明
答: 1).無參的構造方法,只有在該類沒有聲明任何構造方法的時候,才是默認存在的。
2).只要聲明了其他帶參的構造方法,無參的構造方法將不會默認存在,而是必須聲明才可以使用。
例: public class Cars{
private String color;
private double price;
public Cars(String color){
this.color = color;
}
}
如上面所示,Cars類中不再有默認無參數構造方法,如果需要使用,必須顯式聲明無參構造方法。
23.如何創建對象?舉例說明
答:使用new調用構造方法創建類的一個對象:
1).調用無參數的構造方法
類名 對象名 = new 該類的構造方法();
例:Book javaBook = new Book();
2).調用有參數的構造方法
類名 對象名 = new 該類的構造方法
(參數1,參數2,,…);
例:Book javaBook = new Book(1,“西游記”);
24.如何使用對象?舉例說明
答:1).使用對象:使用“.”進行以下操作
*訪問類的屬性:對象名.屬性
*調用類的方法:對象名.方法名()
例:javaBook.ISBN = “ISN8892”;//給屬性賦值
System.out.println(javaBook.ISBN); //獲取屬性值
javaBook.borrow();
//調用類的方法,該方法中的操作將被執行
25.創建對象分為哪些步驟?都包含哪些內容?
答:1).假設存在一個類Person,創建對象語句如下所示
Person p = new Person();
2).將上面的語句分為兩個步驟:
Person p;
P = new Person();
3).創建一個對象后,其實有兩個實體:
*對象引用變量,在棧空間,即p,稱為引用,或句柄,存的是對象的虛地址;
*對象本身,即使用new Person()在堆空間里
創建的實體,將對象的屬性值存儲到堆里;
*可以使用引用變量操作對象的屬性和方法;
26.如何初始化並且創建對象?舉例說明
答:package com.chinasofti.corejava.ch02;
Public class Cars{
Private String color;
Private double price;
Public Cars(String color,double price){
this.color = color;
this.price = price;
}
Public void setColor(String color){
this.color = color;
}
Public void setPrice(double price){
this.price = price;
}
public static void main(String[] args){
Cars car 1 = new Cars(“black”,60000);
Cars car 2 = new Cars(“red”,50000);
}
}
1).把Cars類的字節碼加載到內存;
2).根據Cars類的聲明,把屬性color、price初始化到內存堆,並賦初值,分別為null和0.0;
3).根據代碼,調用兩個參數的構造方法,把black、60000賦值給color和price;
4).在棧中創建一個變量car1,用來引用堆中對象的具體屬性,car1的值是一個16進制的數,表示一個虛地址;
5).重復2---4創建對象car2,car2與car1是不同的引用,指向不同的具體對象。也就是說,car1和car2分別引用不同的具體內容。
27.什么是塊?有幾種類型?
答:1).塊在類中聲明,類似一個沒有方法聲明的方法體,分為實例塊和靜態塊;
2).*實例塊:每次調用構造方法前自動調用
{
//任何符合語法的Java代碼
}
*靜態塊:類加載時被調用一次,僅一次,與是否創建對象無關。(static相關內容后續學習)
static{
//任何符合語法的Java代碼
}
28.什么是內部類?如何使用內部類?
答:1).內部類:在類的內部定義的類,不能在
方法內部定義;
2).內部類可以直接調用外部類的屬性,往往在GUI編程中使用較多
Public class Outer{
Private int x;
class Inner{
public void test(){
x++;
}
}
}