Java入門習題(五)——內部類
阿新 • • 發佈:2018-12-26
Java入門習題
內部類部分
1,請使用匿名內部類補足程式碼
interface Inter{
void show(int a,int b);
void fun();
}
class Demo{
public static void main(String [] args){
//補足程式碼!!!
}
}
參考答案:
public static void main(String [] args){
Inter inter=new Inter(){
public void show (int a,int b){}
public void fun(){}
};
inter.show(1,2);
inter.fun();
}
2,請簡述下列程式執行結果
class A{
int y=6;
class Inner{
static int y=3;
void show(){
System.out.println(y);
}
}
}
class Demo{
public static void main(String [] args){
A.Inner inner=new A().new Inner();
inner.show();
}
}
參考答案:
編譯失敗,原因:非靜態內部類不能定義靜態成員
3,請分析以下程式碼能否被放置在相應的位置上
class Demo{
public void func(){
//位置1
}
class Inner{}
public static void main(String [] args){
Demo d=new Demo();
//位置2
}
}
A.位置1:new Inner();
B.位置2:new Inner();
C.位置2:new d.Inner();
A.位置2:new Demo.Inner();
參考答案:
A 正確
B 錯誤:成員內部類(非靜態內部類)不能被靜態方法呼叫
C、D 錯誤:正確的建立格式應為 Inner inner=t.new Inner();
解析 成員內部類與成員方法和成員變數一樣,應被外部類物件呼叫,C選項的方式不符合語法規範,D選項錯誤的原因是Inner是非靜態的
4,補全程式碼
interface Inter{
void func();
}
class Demo{
public static void main(String [] args){
//使用匿名內部類補足程式碼
}
void show(Inter inter){
t.func();
}
}
僅供參考:
public static void main(String [] args){
new Demo().show(new Inter(){
public void func(){
System.out.println("hello world");
}
});
}