国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

對Java嵌套類的討論

2019-11-18 10:59:28
字體:
來源:轉載
供稿:網友

  摘要:與字段和方法類似,java答應類是其它類的成員。在這里,我們將嵌套類分為4種--嵌套頂級類(nested top-level classes),成員內部類(instance inner classes),本地內部類(local inner classes)和匿名內部類(anonymous inner classes)。

  在教授Java時,我經常發現學生嘗試在方法中聲明其它的方法。不過,與Pascal語言不同--Pascal答應嵌套聲明過程PRocedures(與方法類似),而Java是不答應這樣做的。對于以下的代碼,嘗試在outerMethod()中聲明innerMethod()方法,編譯時將會通不過。

void outerMethod ()
{
void innerMethod ()
{
}
}

  不過,由Java語言規范1.1開始,Java就支持類嵌套;Java編譯器答應一個類出現在另一個類中。以下的代碼段就展示了如何在outerClass類中嵌套innerClass類。

class outerClass
{
class innerClass
{
}
}

  為什么Java支持類嵌套,還有Java支持哪些類嵌套?以下的部分將會回答這些問題,當你讀完這篇文章,你就會學習到類嵌套的相關知識,并且運用它來寫出強大的Java程序。首先我們先來看一下為什么Java支持類嵌套。

  注重:在發布JDK1.1后,Sun發布了內部類規范的文檔。該文檔談到嵌套頂級類和內部類的運用。在讀完這篇文章后,我強烈建議你瀏覽這些文檔。

  為什么Java支持類嵌套?

  Java并非一定要支持類嵌套。實際上,假如你看過內部類規范文檔,你將會發現類嵌套的應用在哪里。不過,Java支持類嵌套至少有兩個好處:

  .令源代碼更加清楚

  .減少命名的沖突

  通過類嵌套可以令源代碼變得更為清楚,因為你聲明了一個包含有一些對象的類,它必須可以治理和答應類中的方法來直接訪問對象的字段,以及調用對象的方法--即使是外部類中的私有字段和方法。要理解這個好處,可用以下的一個例子說明,在這個程序中要循環遍歷一個Employee對象中的Job對象:

Listing 1. JobIterator1.java

// JobIterator1.java

class Job
{
private String joBTitle;

Job (String jobTitle)
{
this.jobTitle = jobTitle;
}

public String toString ()
{
return jobTitle;
}
}

class Employee
{
private String name;
private Job [] jobs;
private int jobIndex = 0;

Employee (String name, Job [] jobs)
{
this.name = name;
this.jobs = jobs;
}

String getName ()
{
return name;
}

boolean hasMoreJobs ()
{
return jobIndex < jobs.length;
}

Job nextJob ()
{
return !hasMoreJobs () ? null : jobs [jobIndex++];
}
}

class JobIterator1
{
public static void main (String [] args)
{
Job [] jobs = { new Job ("Janitor"), new Job ("Delivery Person") };

Employee e = new Employee ("John Doe", jobs);

System.out.println (e.getName () + " works the following jobs:/n");

while (e.hasMoreJobs ())
System.out.println (e.nextJob ());
}
}

  運行后, JobIterator1產生如下的輸出:

   John Doe works the following jobs:

   Janitor
   Delivery Person

  JobIterator1包含有Job, Employee和JobIterator1類。Job封裝了一個job的title,而Employee封裝了一個員工的名字以及該員工所做工作的一個數組。JobIterator1包含有一個main()的方法用來創建Job和Employee對象,并且打印出該員工的名字和工作。

  Employee類中包含有方法hasMoreJobs()和nextJob()。這兩個方法構成了一個循環。當一個Employee對象初始化時,在私有jobs數組中的一個內部索引被設置為0。假如該索引的值比jobs數組的長度少,hasMoreJobs()方法返回一個布爾值true。nextJob()使用該索引值由數組中返回一個Job對象--并且增加該索引的值,以便下一次調用nextJob()時返回下一個job對象的一個引用。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙陵县| 高清| 建平县| 罗江县| 宁海县| 西贡区| 西吉县| 大邑县| 普定县| 贡嘎县| 冷水江市| 渭南市| 仪征市| 宁化县| 永福县| 东台市| 繁昌县| 福建省| 郁南县| 乐业县| 东兴市| 崇州市| 孝昌县| 万年县| 梅河口市| 眉山市| 台东市| 漠河县| 茂名市| 昂仁县| 鹤岗市| 永顺县| 金乡县| 新平| 汪清县| 太谷县| 石嘴山市| 洞头县| 万宁市| 曲水县| 鸡东县|