1.2.6 內(nèi)部類使用的其它的問題
通過以上,我們可以清楚地看出內(nèi)部類的一些使用方 法,同時(shí),在許多時(shí)候,內(nèi)部類是在如Java的事件處理、或做為值對象來使用的。同時(shí),我們需注意最后一個(gè)問題,那就是,內(nèi)部類同其它類一樣被定義,同樣 它也可以繼承外部其它包的類和實(shí)現(xiàn)外部其它地方的接口。同樣它也可以繼承同一層次的其它的內(nèi)部類,甚至可以繼承外部類本身。下面我們給出最后一個(gè)例子做為 結(jié)束:
public class Layer {
//Layer類的成員變量
private String testStr = "testStr";
//Person類,基類
class Person{
String name;
Email email;
public void setName(String nameStr){
this.name = nameStr;
}
public String getName(){
return this.name;
}
public void setEmail(Email emailObj){
this.email = emailObj;
}
public String getEmail(){
return this.email.getMailStr();
}
//內(nèi)部類的內(nèi)部類,多層內(nèi)部類
class Email{
String mailID;
String mailNetAddress;
Email(String mailId,String mailNetAddress){
this.mailID = mailId;
this.mailNetAddress = mailNetAddress;
}
String getMailStr(){
return this.mailID +"@"+this.mailNetAddress;
}
}
}
//另一個(gè)內(nèi)部類繼承外部類本身
class ChildLayer extends Layer{
void print(){
System.out.println(super.testStr);//訪問父類的成員變量
}
}
//另個(gè)內(nèi)部類繼承內(nèi)部類Person
class OfficePerson extends Person{
void show(){
System.out.println(name);
System.out.println(getEmail());
}
}
//外部類的測試方法
public void testFunction(){
//測試第一個(gè)內(nèi)部類
ChildLayer childLayer = new ChildLayer();
childLayer.print();
//測試第二個(gè)內(nèi)部類
OfficePerson officePerson = new OfficePerson();
officePerson.setName("abner chai");
//注意此處,必須用 對象.new 出來對象的子類對象
//而不是Person.new Email(...)
//也不是new Person.Email(...)
officePerson.setEmail(officePerson.new Email("josserchai","yahoo.com"));
officePerson.show();
}
public static void main(String[] args) {
Layer layer = new Layer();
layer.testFunction();
}
}
相關(guān)推薦:計(jì)算機(jī)等級考試二級Java經(jīng)典算法大全匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |