1. 程式人生 > 其它 >java 中的內部類

java 中的內部類

內部類

1,新建Outer類

package oop.demo11;

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

    public void out() {
        System.out.println("這是一個外部類 方法;");
    }

    //   這是一個內部類
    public class Inner {
        public void in() {
            System.out.println("這是一個內部類 方法;");
        }

        //        內部類,訪問外部類的一些私有變數;
//        獲得外部類的繫有屬性;
        public void getTd() {
            System.out.println("id:" + id);
        }
    }

    //    靜態內部類
//   這是一個內部類
    public static class Inner2 {
        public void in() {
            System.out.println("這是一個內部類 方法;");
        }

        //        內部類,訪問外部類的一些私有變數;
//        獲得外部類的繫有屬性;
        public void getTd() {
            System.out.println("id:" + id);
        }
    }

    //    區域性內部類
    public void method() {
        class Inner3 {
            public void in() {

            }
        }
    }

}

//一個Java類 中可以的多個class類 但是 只有一個 public class
//內部類;
class A {
    public static void main(String[] args) {

    }
}

2,新建Test類

package oop.demo11;

public class Test {
    public static void main(String[] args) {
        Apple apple = new Apple();
        apple.eat(); //eat------------>Apple

        System.out.println("===========");
//        沒有名字初始化類、 匿名內部類;匿名物件的使用;  不用蔣例項儲存到變數中,
        new Apple().eat(); //eat------------>Apple

        UserService userService =  new UserService() {
            @Override
            public void hell0() {

            }
        };
    }
}

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

interface UserService {
    void  hell0();
}

3,新建Application類

package oop.demo11;

public class Application {
    public static void main(String[] args) {
        //new
        Outer outer = new Outer();
        outer.out(); //這是一個外部類 方法;

//        通過這個外部內來例項化這個內部類;
        Outer.Inner inner = outer.new Inner();
        inner.in(); //這是一個內部類 方法;

        inner.getTd(); //id:19301041
    }
}

4,執行結果