• 2017.12.13T19_B2_6.4内部类


    package com.xdf.demo;

    /**
     * 匿名内部类
     */
    public interface Animal {

     /**
      * 所有动物吃饭的方法
      */
     void eat();
    }***************************************

    package com.xdf.demo;

    /**
     *  外部类 必须是 public 修饰,不能更改 访问权限修饰符
     *  内部类可以设置 访问权限修饰符
     * 
     *  如果我们把Son单独提取成一个类
     *  这样任何地方都可以访问Son!
     *  现在把Son变成了内部类!
     *  别人必须想访问Father,才能拿到Son
     * 
     */
    public class Father { // 外部类
     /**
      * 外部类的成员变量
      */
     private static int age = 50;
     private String name = "小白";

     /**
      * 定义成员内部类
      */
     class Son { // begin Son
      int age = 100;
      String name = "小黑";

      /**
       * 内部类的方法
       */
      public void sayHello() {
       System.out.println("Son   成员内部类 打招呼的方法!");
       System.out.println("内部类age==>" + age);
       System.out.println("内部类name==>" + name);
       System.out.println("======获取外部类的属性=======");
       System.out.println("外部类age==>" + Father.this.age);
       System.out.println("外部类name==>" + Father.this.name);
      }
     } // end Son

     /**
      * 外部类的方法
      */
     public void getSon() {
      class Son { // 局部内部类 仅限于 getSon()方法
       public void sayHello() {
        System.out.println("Son  局部内部类 打招呼的方法!");
       }
      }
      Son son = new Son();
      son.sayHello();
     }

     /**
      * 静态内部类
      */
     static class Son2 {
      public void sayHello() {
       System.out.println("Son2  静态内部类 打招呼的方法!" + age);

    **********************************************************

    package com.xdf.demo;

    import com.xdf.demo.Father.Son;
    import com.xdf.demo.Father.Son2;

    public class InnerClassDemo {

     public static void main(String[] args) {
      /**
       * 使用成员内部类
       * 01.实例化外部类对象
       * 02.通过外部类对象创建内部类对象
       * 03.调用内部类的属性和方法
       */
      Father father = new Father();
      Son son = father.new Son();
      son.sayHello();

      // 访问局部内部类
      father.getSon();

      // 访问静态内部类
      Son2 son2 = new Son2();
      son2.sayHello();

      // 访问匿名内部类
      Demo demo = new InnerClassDemo().new Demo();
      demo.animalEat("大大的");

     }

     class Demo { // 成员内部类

      public void animalEat(final String name) {
       // 实例化一个动物 匿名内部类
       Animal dog = new Animal() {
        @Override
        public void eat() {
         System.out.println(name + "小狗在啃骨头!!");
        }
       };
       dog.eat();

      }

  • 相关阅读:
    使用 webapi+Aspose.Cells 导出execl 功能
    自定义html滚动条样式
    vue+webapi 实现WebSocket 推送
    vue 跨层级 调用solt 传递
    关于对 asp.net mvc 异步方法的理解
    c# 反射机制
    千里之行,始于足下
    [转]浅析大数据量高并发的数据库优化
    关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
    深拷贝
  • 原文地址:https://www.cnblogs.com/xiaoxiao1016/p/8032051.html
Copyright © 2020-2023  润新知