zoukankan      html  css  js  c++  java
  • 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();

      }

  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/xiaoxiao1016/p/8032051.html
Copyright © 2011-2022 走看看