內部類
內部類就是在一個類的內部在定義一個類,比如,A類中定義一個B類,那么B類相對A類來說就稱為內部類,而A類相對B類來說就是外部類了。
1.成員內部類
2.靜態內部類
3.局部內部類
4.匿名內部類
成員內部類
public class Outer {
private int id = 10;
public void out(){
System.out.println("這是外部類的方法");
}
public class Inner{
public void in(){
System.out.println("這是內部類的方法");
}
//獲得外部類的私有屬性
public void getId(){
System.out.println(id);
}
}
}
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
//通過這個外部類來實例化內部類
Outer.Inner inner = outer.new Inner();
inner.getId();
}
}
靜態內部類
public class Outer {
private static int id = 10;
public void out(){
System.out.println("這是外部類的方法");
}
public static class Inner{
public void in(){
System.out.println("這是內部類的方法");
}
//獲得外部類的私有屬性
public static void getId(){
System.out.println(id);
}
}
}
public class Outer {
}
//一個Java類中可以有多個class類,但是只能有一個public class
class TestA{
public static void main(String[] args) {
}
}
局部內部類
public class Outer {
//局部內部類
public void method(){
class Inner{
public void in(){
}
}
}
}
匿名內部類
public class Test1 {
public static void main(String[] args) {
//沒有名字初始化類,不用講實例保存到變量中
new Apple().eat();
UserService userService = new UserService(){
@Override
public void hello() {
}
};
}
}
class Apple{
public void eat(){
System.out.println("吃吃吃");
}
}
interface UserService{
void hello();
}
每日Java面試題
1.interrupted和isInterrupted
interrupted:判斷當前線程是否已經中斷,會清除狀態
isInterrupted:判斷線程是否已經中斷,不會清除狀態
2.線程的優先級
在操作系統中,線程可以劃分優先級,優先級較高的線程得到cpu資源比較多,也就是cpu有限執行優先級較高的線程對象中的任務,但是不能保證一定優先級高,就先執行。
Java的優先級分為1~10個等級,數字越大優先級越高,默認優先級大小為5。超出范圍則拋出:
java.lang.IllegalArgumentException。
3.優先級繼承特性
線程的優先級具有繼承性,比如a線程啟動b線程,b線程與a優先級是一樣的。