本文共 3451 字,大约阅读时间需要 11 分钟。
11.6 内部类的概念与分类
修饰符 class 外部类名称 { 修饰符 class 内部类名称{ }}
package com.xww.day11.demo02;public class Body { public class Heart{ //内部类的方法 public void beat(){ System.out.println("内部类方法"); System.out.println(name);//内部类使用外部类成员变量 method();//内部类使用外部类成员方法 } } //外部类成员变量 private String name; //外部类方法 public void method(){ System.out.println("外部类方法"); new Heart().beat();//外部类使用内部类方法 }}
11.7 成员内部类的使用
public static void main(String[] args) { Body body = new Body();//定义外部类对象 body.method();//通过外部类对象,调用外部类的方法,里面间接使用内部类Heart Body.Heart heart = new Body().new Heart();//定义内部类对象 heart.beat(); }
11.8 内部类的同名变量访问
public class Out { int num = 10;//外部类成员变量 public class inner{ int num = 20;//内部类成员变量 public void method(){ int num = 30;//内部类局部变量 System.out.println(num);//30,局部 System.out.println(this.num);//20,内部 System.out.println(Out.this.num);//10,外部 } }}
11.9 局部内部类定义
修饰符 class 外部类名称 { 修饰符 返回值类型 外部类方法名(参数) { class 局部内部类名称 { //其他代码 } }}
public class Outer { public void method(){ class Iner{ public void methodIner(){ System.out.println("局部内部类方法"); } } Iner iner = new Iner();//局部方法中定义局部类对象 iner.methodIner();//局部方法中调用局部类方法 }}
11.10 局部内部类的 final 问题
public class MyOuter { public void methodOuter() { final int num = 10; // 所在方法的局部变量 class MyInner { public void methodInner() { System.out.println(num); } } }}
11.11 匿名内部类
接口名称 对象名 = new 接口名称() { //覆盖重写所有抽象方法; };
package com.xww.day11.demo02;public class Demo02N { public static void main(String[] args) { //使用匿名内部类 MyInterface obj = new MyInterface() { @Override public void method() { System.out.println("匿名内部类实现了方法"); } }; obj.method(); }}
11.12 匿名内部类的注意事项
package com.xww.day11.demo02;public class Demo02N { public static void main(String[] args) { //使用匿名内部类 MyInterface obja= new MyInterface() { @Override public void method() { System.out.println("匿名内部类实现了方法"); } }; obja.method(); MyInterface objb= new MyInterface() { @Override public void method() { System.out.println("匿名内部类实现了方法"); } }; objb.method(); new MyInterface(){ @Override public void method() { System.out.println("匿名内部类实现了方法"); } }.method(); }}
转载地址:http://trrwz.baihongyu.com/