1. 程式人生 > 其它 >java高階玩法

java高階玩法

java高階玩法

內部類通過外部類來例項化

package com.yuanyu.Demo08;

public class Outer { //外部類
    private int id;

    public void out(){
        System.out.println("Outer");
    }

    class Inner{ //內部類
        public void in(){
            System.out.println("Inner");
        }
    }
}

package com.yuanyu.Demo08;

public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
        //通過外部類來例項內部類
        Outer.Inner inner = outer.new Inner();
        inner.in(); //Inner
    }
}

內部類可以獲取外部類的私有屬性和方法

package com.yuanyu.Demo08;

public class Outer { //外部類
    private int id=10;

    public void out(){
        System.out.println("Outer");
    }

    class Inner{ //內部類
        public void in(){
            System.out.println("Inner");
        }

        public void getId(){
            System.out.println(id);
        }
    }
}

package com.yuanyu.Demo08;

public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();
        //內部類可以獲取外部類的私有屬性
        inner.getId(); //10
    }
}

一個java類中只能有public class類,但是可以有多個class類

區域性內部類(定義在方法中的類):

package com.yuanyu.Demo08;

public class Outer { //外部類
    public void out(){
        class Inner{
            //區域性內部類
            public void in(){
                
            }
        }
    }
}

匿名物件的使用:

package com.yuanyu.Demo08;

public class Test {
    public static void main(String[] args) {
        new Apple().eat(); //沒有名字初始化類,不用將例項儲存到變數中
    }
}

class Apple{
    public void eat(){
        System.out.println("eat apples");
    }
}

用類來實現介面:

package com.yuanyu.Demo08;

public class Test {
    public static void main(String[] args) {

        UserService userService = new UserService() { //實現介面的類(匿名類)

            @Override
            public void hello() {

            }
        };
    }
}


interface UserService{
    void hello();
}