A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

什么是内部类?
                一个类定义在另一类的里面,那里面的类就被称为内部类

        内部类的特点是什么?
                内部类可以直接访问外部类的非私有成员和私有成员
                外部类可以访问内部类里的内容,但是,要先创建内部类对象,然后再对其进行访问

        内部类分为哪几种?
                成员内部类:
                        如果成员内部类被public修饰的时候:
                        例:
                           class Outer {
                                   public class Innner {
                                           int i = 2;

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

                           class Demo {
                                   public static void main(String[] args) {
                                                Outer.Inner oi = new Outer().new Inner();
                                                Systme.out.println(oi.i);
                                                oi.eat();
                                   }
                           }

                        如果成员内部类被private修饰的时候:       
                        例:
                           class Outer {
                                   private class Inner {
                                                int i = 2;
                                               
                                                public void eat() {
                                                    Systme.out.println("吃");
                                                }
                                   }

                                   public void print() {
                                           Inner inner = new Inner();
                                           inner.eat();
                                           System.out.println(inner.i);
                                   }
                           }

                           class Demo {
                                        public static void main(String[] args) {
                                                Outer outer = new Outer();
                                                outer.print();
                                        }
                           }

                        如果成员内部类被static修饰的时候:
                        例:
                                class Outer {
                                        static class Inner {
                                                int i = 2;

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

                                class Demo {
                                        public static void main() {
                                                Outer.Inner oi = new Outer.Inner();
                                                oi.eat();
                                                System.out.println(oi.i);
                                        }
                                }

                局部内部类:
                        例:
                                class Outer {
                                        public void print() {
                                                class Inner {
                                                        int i = 2;

                                                        public void eat() {}
                                                }

                                                Inner inner = new Inner();
                                                inner.eat();
                                                System.out.println(inner.i);
                                        }
                                }

                                class Demo {
                                        public static void main() {
                                                Outer outer = new Outer();
                                                outer.print();
                                        }
                                }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马