內部類定義格式
內部類的訪問特點
示例**:
/*
內部類訪問特點:
內部類可以直接訪問外部類的成員,包括私有
外部類要訪問內部類的成員,必須建立物件
*/public
class
outer
}public
void
method()
}
外界建立成員內部類格式
私有成員內部類
靜態成員內部類
區域性內部類方式方式
示例**
class
outer
} inner i =
newinner()
; i.
show()
;}}public
class
outerdemo
}
匿名內部類的格式
匿名內部類的本質
匿名內部類的細節
匿名內部類直接呼叫方法
inte***ce
inter
class
test}.
method()
;// 直接呼叫方法
}}
示例**:
/*
游泳介面
*/inte***ce
swimming
public
class
testswimming})
;}/** * 使用介面的方法
*/public
static
void
goswimming
(swimming swimming)}*/
swimming.
swim()
;}}
組成lambda表示式的三要素:
練習描述
無參無返回值抽象方法的練習
操作步驟
示例**
//介面
public
inte***ce
eatable
//實現類
public
class
eatableimpl
implements
eatable
}//測試類
public
class
eatabledemo})
;//lambda表示式
useeatable((
)->);
}private
static
void
useeatable
(eatable e)
}
示例**
public
inte***ce
flyable
public
class
flyabledemo})
; system.out.
println
("--------");
//lambda
useflyable
((string s)
->);
}private
static
void
useflyable
(flyable f)
}
示例**
public
inte***ce
addable
public
class
addabledemo);
}private
static
void
useaddable
(addable a)
}
**演示
public
inte***ce
addable
public
inte***ce
flyable
public
class
lambdademo
);//引數的型別可以省略
useaddable
((x, y)
->);
// useflyable((string s) -> );
//如果引數有且僅有乙個,那麼小括號可以省略
// useflyable(s -> );
//如果**塊的語句只有一條,可以省略大括號和分號
useflyable
(s -
> system.out.
println
(s))
;//如果**塊的語句只有一條,可以省略大括號和分號,如果有return,return也要省略掉
useaddable
((x, y)
-> x + y);}
private
static
void
useflyable
(flyable f)
private
static
void
useaddable
(addable a)
}
使用限制不同
實現原理不同
內部類,lambda表示式
在乙個類中定義乙個類.分類 成員內部類 在類的成員位置 區域性內部類 在類的區域性位置 例子 成員內部類 public class test1inner class outer 成員內部類 概述 定義在類中方法之外的內部類.私有成員內部類訪問 private 在自己所在的外部類中建立物件訪問.sta...
匿名內部類與Lambda表示式
1.特徵上 沒有名字 2.實現上 既可以擴充套件類,也可以實現介面,但是不能兩者兼備 3.限制上 如果實現介面,只能實現乙個介面 4.功能上 簡化 符合優先使用類而不是介面的設計思想 舉例 description service介面 inte ce service description servi...
靜態內部類和Lambda表示式
1.靜態內部類 有名靜態內部類 static class heart 匿名靜態內部類 class father 外部類 public class outclass 2.用法 在非靜態方法建立非靜態內部類的物件,先建立外部類物件,是隱式,用this。public class body public v...