zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Java之lambda表达式
    修改IntelliJ IDEA的java编译版本
    no route to host解决方案、Failed to start LSB: Bring up/down networking的问题解决方案
    spark转换集合为RDD
    spark编写word count
    nexus
    spark 源码安装
    spark shell
    maven
    git
  • 原文地址:https://www.cnblogs.com/duanfu/p/12222639.html
Copyright © 2011-2022 走看看