首页 > 代码库 > java 内部类复习
java 内部类复习
1 /** 2 * 内部类详解 3 * 4 * @author shao 5 * 6 */ 7 public class InnerClass { 8 9 public static void main(String[] args) { 10 Man p = new Man("丽丽"); 11 Man.Son son = p.new Son("小丽丽"); 12 son.play(); 13 Man.Girl girl = new Man.Girl(); 14 girl.play(); 15 p.work(); 16 p.getMoney().fun(); 17 } 18 19 } 20 21 class Man { 22 23 private String wife; 24 private String house = "房子"; 25 private static String girlOwn = "嫁妆是必须的"; 26 27 public Man(String wife) { 28 this.wife = wife; 29 } 30 31 public void work() { 32 // 从不向儿子索取 33 // System.out.println("工作"+toy); 34 35 // 局部内部类,与局部变量类似 ,用法与成员内部类一样 36 class Sleep { 37 public String sleep() { 38 return "该睡觉了~~~~"; 39 } 40 } 41 42 System.out.println(new Sleep().sleep()); 43 44 } 45 46 public static String fun() { 47 return "天天上班挣钱"; 48 } 49 50 public Money getMoney() { 51 52 /* 53 * 匿名内部类是一种特殊的局部内部类,没有类名,只适合一次并且不需要多次创建的类。 匿名内部类是唯一一种没有构造方法的类。 54 * 匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写,在android开发中经常用到。事件监听等 。 55 */ 56 return new Money() { 57 58 @Override 59 public void fun() { 60 System.out.println("就涨过一次工资。。。。哎"); 61 } 62 63 }; 64 } 65 66 /* 67 * 非静态内部类,可以调用引用类的成员变量,但引用类,不可以调用 内部 类的成员变量。 68 */ 69 class Son { 70 71 private String wife; 72 private String toy; 73 74 public Son(String wife) { 75 this.wife = wife; 76 } 77 78 public void play() { 79 System.out.println(wife + ",是我妈咪的儿媳妇~"); 80 System.out.println(Man.this.wife + ",是我妈咪"); 81 System.out.println("我是儿子,可以继承资产..." + house + "--哈哈——"); 82 System.out.println(fun() + "也是我的钱。"); 83 } 84 } 85 86 /* 87 * 当一个静态内部类存在,并不一定存在对应 的外部类对象 可以看成外部类(引有类)的一个静态成员 88 */ 89 static class Girl { 90 91 private String dress; 92 93 public void play() { 94 95 // 静态内部类不可以访问外部类的成员变量 96 // System.out.println("我也不需要房子"+house); 97 System.out.println(girlOwn + ",这个再不能给哥哥了~"); 98 99 }100 }101 102 public interface Money {103 void fun();104 }105 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。