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("--------");
}
}
原文:http://www.cnblogs.com/vmkash/p/4833940.html