16.初识内部类

Posted duanfu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16.初识内部类相关的知识,希望对你有一定的参考价值。

内部类:
内部类就是在一个类的内部再定义一个类,比如,A类中定义了一个B类,那么B类相对于A类来说就成为内部类了,而A类相对于B类来说就是一个外部类了。
  成员内部类:获得外部类的私有属性、私有方法...
 1 package com.oop.demo11;
 2 
 3 public class Outer {
 4 
 5     private int id = 10;
 6 
 7     public void out() {
 8         System.out.println("这是外部类的方法");
 9     }
10 
11     public class Inner {
12         public void in() {
13             System.out.println("这是内部类的方法");
14         }
15 
16         //获得外部类的私有属性、私有方法...
17         public void getId() {
18             System.out.println(id);
19         }
20     }
21 }
 1 package com.oop;
 2 
 3 import com.oop.demo11.Outer;
 4 
 5 public class Application {
 6 
 7     public static void main(String[] args) {
 8 
 9         Outer outer = new Outer();
10 
11         //通过这个外部类来实例化内部类
12         Outer.Inner inner = outer.new Inner();
13         inner.in();
14         inner.getId();
15     }
16 }
17 
18 结果:
19 这是内部类的方法
20 10
静态内部类:内部类加个static,以后在lambada表达式里详解
 1 package com.oop.demo11;
 2 
 3 public class Outer {
 4 
 5     private int id = 10;
 6 
 7     public void out() {
 8         System.out.println("这是外部类的方法");
 9     }
10 
11     public static class Inner {
12         public void in() {
13             System.out.println("这是内部类的方法");
14         }
15     }
16 }
局部内部类:
 1 package com.oop.demo11;
 2 
 3 public class Outer {
 4 
 5     //局部内部类:
 6     //和局部变量的位置一样,变量写在方法里面就是局部变量
 7     public void method() {
 8 
 9         class Inner {
10             public void in() {
11 
12             }
13         }
14     }
15 }
匿名内部类:
 1 package com.oop.demo11;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         //没有名字初始化类,不用将实例保存到变量中~
 6         new Apple().eat();
 7 
 8         UserService userService = new UserService() {
 9             @Override
10             public void hello() {
11 
12             }
13         };
14     }
15 
16 }
17 
18 class Apple {
19     public void eat() {
20         System.out.println("1");
21     }
22 }
23 
24 interface UserService {
25     void hello();
26 }

 

以上是关于16.初识内部类的主要内容,如果未能解决你的问题,请参考以下文章

片段内部静态类和gradle问题

内部类初识

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

片段 - 全局视图变量与本地和内部类侦听器和内存泄漏

为啥片段类应该是公开的?