间歇性混吃等死, 持续性踌躇满志系列 ------------- 第 3 天
1, 局部内部类
局部内部类是指在类的方法中定义的内部类, 它的作用范围也是在这个方法体内.
- class SellOutClass{
- private String name; // 私有成员变量
- public SellOutClass(){
- name = "苹果"; // 构造方法
- }
- public void sell(int price){
- class Apple{ // 局部内部类
- int innerPrice = 0;
- public Apple(int price){ // 构造方法
- innerPrice = price;
- }
- public void price(){ // 方法
- System.out.println("现在开始销售"+name);
- System.out.println("单价为:"+innerPrice+"元");
- }
- }
- Apple apple = new Apple(price); // 实例化 Apple 类的对象
- apple.price(); // 调用局部内部类的方法
- }
- public static void main(String[] args){
- // 实例化 SellOutClass 类的对象
- SellOutClass sample = new SellOutClass();
- // 调用 SellOutClass 类的 sell() 方法
- sample.sell(200);
- }
- }
- View Code
运行结果图
2, 匿名内部类
由于匿名内部类没有名称, 所以你匿名内部类使用默认构造方法来生成匿名内部类的对象, 在匿名内部类定义结束后, 需要加分号标识, 这个分号并不代表定义内部类结束的标识, 而代表创建匿名内部类的引用表达式的标识.
语法格式:
- return new A(){
- ...// 内部类体
- }
例: 在 main() 方法中编写匿名内部类去除字符串中的全部空格
- public class OutString{
- public static void main(String[] args){
- final String sourceStr = "福 建 省 后 天 科 技有限公司";
- // 编写匿名内部类
- IStringDear s = new IStringDear(){
- public String filterBlankChar(){
- String convertStr = sourceStr;
- // 替换全部空格
- convertStr = convertStr.replaceAll("","");
- // 返回转换后的字符串
- return convertStr;
- }
- };
- // 输出源字符串
- System.out.println("源字符串:"+sourceStr);
- // 输出转换后的字符串
- System.out.println("转换后的字符串:"+s.filterBlankChar());
- }
- }
- interface IStringDear{
- // 声明过滤字符串中的空格的方法
- public String filterBlankChar();
- }
- View Code
运行结果图
3, 在静态内部类中定义主方法, 并访问内部类中的方法
- public class OutString{
- static int x = 1000;
- static class Inner{
- static void doitInner(){
- // 调用外部类的成员变量 X
- System.out.println("外部类的成员变量"+x);
- }
- // 定义主方法
- public static void main(String[] args){
- // 访问内部类的方法
- doitInner();
- }
- }
- }
- View Code
运行结果图
来源: http://www.bubuko.com/infodetail-2987706.html