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