标签:封装 generate mic 自己的 col sys 自己 show 类方法
所谓的内部类也就是在一个类的内部进行其他类结构的嵌套操作。
这就要引用一句十分著名的一本书叫《Think in java》中的一句名言了——每个内部类都能独立的继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都是没有影响的。
因为内部类拥着类的一些基本特征,所以在实际问题中我们会遇到一些接口无法解决或者难以解决的问题,此时我们可以使用内部类继承某个具体的或者抽象的类,间接解决类无法多继承引起的一系列问题。
从广义上讲,java内部类可以分成四大类:成员内部类,静态内部类,匿名内部类,局部内部类(方法内部类),一个一个来
Outter outter = new Outter(); Outter.Inner inner = outter.new Inner(); //必须通过Outter对象来创建
Outter.inner inner = outter.getinnerinstance();
1 public class Outer { 2 3 private int age = 99; 4 String name = "Coco"; 5 public class Inner{ 6 String name = "Jayden"; 7 public void show() { 8 System.out.println(Outer.this.name); 9 System.out.println(name); 10 System.out.println(age); 11 } 12 } 13 public Inner getInnerClass() { 14 return new Inner(); 15 } 16 public static void main(String[] args) { 17 Outer o = new Outer(); 18 Inner in = o.new Inner(); 19 in.show(); 20 } 21 }
运行之后的结果是:
需要提醒的是编译上面的程序后,会发现产生了两个class文件
1 public class Outer{ 2 private int age = 99; 3 static String name = "Coco"; 4 public static class Inner{ 5 String name = "Jayden"; 6 public void show(){ 7 System.out.println(Outer.name); 8 System.out.println(name); 9 } 10 } 11 public static void main(String[] args){ 12 Inner i = new Inner(); 13 i.show(); 14 } 15 }
运行结果如下:
1 public class Outer { 2 3 // 属性和方法 4 private int outerVariable = 1; 5 // 外部类定义的属性 6 private int commonVariable = 2; 7 // 静态的信息 8 private static int outerStaticVariable = 3; 9 10 // 成员外部方法 11 public void outerMethod() { 12 System.out.println("我是外部类的outerMethod方法"); 13 } 14 15 // 静态外部方法 16 public static void outerStaticMethod() { 17 System.out.println("我是外部类的outerStaticMethod静态方法"); 18 } 19 20 // 程序的入口 21 public static void main(String[] args) { 22 Outer outer = new Outer(); 23 outer.outerCreatMethod(100); 24 } 25 26 // 成员方法,内部定义局部内部类 27 public void outerCreatMethod(int value) { 28 // 女性 29 boolean sex = false; 30 // 局部内部类,类前不能有访问修饰符 31 class Inner { 32 private int innerVariable = 10; 33 private int commonVariable = 20; 34 35 // 局部内部类方法 36 public void innerShow() { 37 System.out.println("innerVariable:" + innerVariable); 38 // 局部变量 39 System.out.println("是否男性:" + sex); 40 System.out.println("参数value:" + value); 41 // 调用外部类的信息 42 System.out.println("outerVariable:" + outerVariable); 43 System.out.println("内部的commonVariable:" + commonVariable); 44 System.out.println("外部的commonVariable:" + Outer.this.commonVariable); 45 System.out.println("outerStaticVariable:" + outerStaticVariable); 46 outerMethod(); 47 outerStaticMethod(); 48 } 49 } 50 // 局部内部类只能在方法内使用 51 Inner inner = new Inner(); 52 inner.innerShow(); 53 } 54 }
运行后的结果是:
定义一个借口
public interface IAnimal { void speak(); }
匿名内部类的使用
1 public class Outer { 2 3 public static IAnimal getInnerInstance(String speak) { 4 return new IAnimal() { 5 @Override 6 public void speak() { 7 // TODO Auto-generated method stub 8 System.out.println(speak); 9 }}; 10 } 11 public static void main(String[] args) { 12 Outer.getInnerInstance("小猫喵喵喵").speak(); 13 } 14 }
。。饿了。。吃饭先。。
标签:封装 generate mic 自己的 col sys 自己 show 类方法
原文地址:https://www.cnblogs.com/wudidamowang666/p/11406627.html