首页 > 编程语言 > 详细

【Java】【内部类】

时间:2015-09-24 00:39:00      阅读:252      评论:0      收藏:0      [点我收藏+]

package test;

/*
             name       age     skills
class      Jason    25      eating
class      Rose    22         shopping
class      Ironman               flying 成员内部类
static class BlackWidow          Spying 成员内部类
class          SpiderMan           Spinning 局部内部类
      Thor         Thunder
      Hulk         Smash
      CaptainAmerica    shield
* -------------------------------------
class Boy{
    Jason
    class Ironman{
      Ironman
      sopany(CaptainAmerica);
    }

    favorite(
       Hulk
       class SpiderMan{
         SpiderMan
         sop(Thor)
       }
    )
}
*
class Girl{
  Rose
  static class BlackWidow{
    BlackWidow
  }
}
*/


class Boy {
  public Boy(){}

  String name = "Jason";
  int age = 25;
  String skills = "eating";

// ----------------------------------------------------
  // 成员内部类 Ironman
  class Ironman {
    public Ironman() {}

    String name = "Ironman";
    int age = 35;
    String skills = "flying";

    public void sopany() {

      String name = "CaptainAmerica";
      int age = 28;
      String skills = "shield";

      System.out.println("\nIronman——sopany");
      System.out.println("CaptainAmerica★"+name+"---"+age+"---"+skills);
      System.out.println("class Ironman★"+this.name+"---"+this.age+"---"+this.skills);
      System.out.println("class Boy★"+new Boy().name+"---"+new Boy().age+"---"+new Boy().skills);
      System.out.println("class Boy★"+Boy.this.name+"---"+Boy.this.age+"---"+Boy.this.skills);
      System.out.println("class Girl★"+new Girl().name + "---" +new Girl().age + "---" +new Girl().skills);
      System.out.println("Ironman——sopany\n");

    }

  }

// ------------------------------------------------------
    public void favorite() {
      System.out.println("\n[---favorite---");

      final String fname = "Hulk";
      final int fage = 30;
      final String fskills = "Smash";

      System.out.println(name + "---" + age + "---" + skills);
      System.out.println(fname + "---" + fage + "---" + fskills);
      System.out.println("class Boy★"+this.name+"---"+this.age+"---"+this.skills);
      System.out.println("class Ironman★"+new Ironman().name+"---"+new Ironman().age+"---"+new Ironman().skills);
      System.out.println("class Girl★"+new Girl().name + "---" +new Girl().age + "---" +new Girl().skills);
      System.out.println("class BlackWidow★"+Girl.BlackWidow.name+"---"+Girl.BlackWidow.age+"---"+Girl.BlackWidow.skills);
      System.out.println("--------\n");
// -------------------------------------------
      // 局部内部类
      class SpiderMan {
        public SpiderMan() {}

        // 局部内部类的成员变量
        String name = "SpiderMan";
        int age = 22;
        String skills = "Spinning";

        public void sop() {
          String name = "Thor";
          int age = 100;
          String skills = "Thunder";

          System.out.println(name + "---" + age + "---" + skills);
          System.out.println(fname + "---" + fage + "---" + fskills);
          System.out.println(this.name + "---" + this.age + "---" + this.skills);
          System.out.println(Boy.this.name+"---"+Boy.this.age+"---"+Boy.this.skills);
          System.out.println("class Boy★"+new Boy().name+"---"+new Boy().age+"---"+new Boy().skills);
          System.out.println("class Ironman★"+new Ironman().name+"---"+new Ironman().age+"---"+new Ironman().skills);
          System.out.println("SpiderMan★"+new SpiderMan().name + "---" +new SpiderMan().age + "---" +new SpiderMan().skills);
          System.out.println("class Girl★"+new Girl().name + "---" +new Girl().age + "---" +new Girl().skills);
          System.out.println("class BlackWidow★"+Girl.BlackWidow.name+"---"+Girl.BlackWidow.age+"---"+Girl.BlackWidow.skills);
        }

      }

      System.out.println("SpiderMan★"+new SpiderMan().name + "---" +new SpiderMan().age + "---" +new SpiderMan().skills);

      SpiderMan sp = new SpiderMan();
      sp.sop();

      System.out.println("\n---favorite---]\n");
      // -------------------------------------------
  }

      // -------------------------------------------------------
      // 打印输出方法sop()
      public void sop() {
        System.out.println("Boy-sop");
        System.out.println(name + "---" + age + "---" + skills);
        System.out.println(this.name + "---" + this.age + "---" + this.skills);
        System.out.println(Boy.this.name+"---"+Boy.this.age+"---"+Boy.this.skills);
        System.out.println("class Boy★"+new Boy().name+"---"+new Boy().age+"---"+new Boy().skills);
        //System.out.println("SpiderMan★"+new SpiderMan().name + "---" +new SpiderMan().age + "---" +new SpiderMan().skills);//报错
        System.out.println("class Girl★"+new Girl().name + "---" +new Girl().age + "---" +new Girl().skills);
        System.out.println("class BlackWidow★"+Girl.BlackWidow.name+"---"+Girl.BlackWidow.age+"---"+Girl.BlackWidow.skills);
        System.out.println("class Ironman★"+new Ironman().name+"---"+new Ironman().age+"---"+new Ironman().skills);
        System.out.println("***---------***");


      //调用成员内部类,必须创建对象。
      Ironman i = new Ironman();
      System.out.println(i.name + "---" + i.age + "---" + i.skills);
      i.sopany();

      System.out.println("Boy-sop");
      System.out.println("------------------------------");
   }
}

class Girl {
  public Girl() {}

  String name = "Rose";
  int age = 22;
  String skills = "shopping";

  // 静态成员内部类
  static class BlackWidow {
    static String name = "BlackWidow";
    static String skills = "Spying";
    static int age = 28;

    public BlackWidow() {}

    // 静态内部类的静态方法访问的变量必须是静态变量
    public static void sop() {
      System.out.println(name + "---" + age + "---" + skills);
    }
  }

    public void sop() {
    System.out.println(name + "---" + age + "---" + skills);

    // 外部类访问成员内部类成员必须创建对象
    BlackWidow bw = new BlackWidow();
    System.out.println(bw.name + "---" + bw.age + "---" + bw.skills);

    // 访问成员方法
    bw.sop();
  }
}

public class InnerClass {
  public static void main(String[] args) {

    Boy b = new Boy();
    b.sop();
    System.out.println("--------");

    Girl g = new Girl();
    g.sop();
    System.out.println("--------");


    System.out.println("成员内部类:非静态如何直接访问内部类的成员。 外部类名.内部类名 对象名 = 外部类对象.内部类对象;");
    Boy.Ironman bi = new Boy().new Ironman();
    System.out.println(bi.name + "---" + bi.age + "---" + bi.skills);
    bi.sopany();
    System.out.println("--------");

    // static成员内部类的访问方式是:格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
    // 方法一,直接通过类名调用
    System.out.println(Girl.BlackWidow.name+"---"+Girl.BlackWidow.age+"---"+Girl.BlackWidow.skills);
    Girl.BlackWidow.sop();// static 调用
    System.out.println("--------");

    // 方法二,通过创建对象调用
    Girl.BlackWidow gb = new Girl.BlackWidow();
    gb.sop();
    System.out.println(gb.name + "---" + gb.age + "---" + gb.skills);
    
    // 调用局部方法,里面有局部内部类。
    b.favorite();
    System.out.println("--------");
  }
}

技术分享

 

【Java】【内部类】

原文:http://www.cnblogs.com/vmkash/p/4833940.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!