【内部类】

内部类 目的:提高安全性


成员内部类
在外部类的内部定义的一个内部类

public class OutClass {
    public static void main(String[] args) {
        OutClass.Inner in = new OutClass().new Inner();
    }
    /**
     * 成员内部类
     **/
    class Inner {

    }
}

局部内部类
在方法中定义的内部类
不能使用public和private修饰
对外界完全隐藏(除了所在的方法以外)

**代码示例:**
public class Out {
        private static int a;
        private int b;
 
        /**
        *  非静态方法内使用局部内部类
        */
        public void test(final int c) {
                final int d = 1;
                class Inner {
                public void print() {
                        System.out.println(a);
                        System.out.println(b);
                }
            }
        }
 
        /**
        *  静态方法内使用局部内部类
        */
        public static void testStatic(final int c) {
                final int d = 1;
                class Inner {
                    public void print() {
                        System.out.println(a);
                        //定义在静态方法中的局部类不可以访问外部类的实例变量
                        //System.out.println(b);
                }
            }
        }
}

静态内部类

**示例代码:**
public class Out {
        private static int a;
        private int b;
 
        public static class Inner {
                public void print() {
                        System.out.println(a);
                }
        }
}

匿名内部类

代码示例:
 
匿名内部类的定义的语法格式  (一种是接口,另一种是抽象类。)
 
/*
*    对于实现接口,由于接口是没有构造函数的,注意这里一定是空参数。
*/
new 实现接口(){
            //匿名内部类类体部分
}
 
或者
/*
*    调用父类的构造器,注意此处可以是空参数,也可以传入参数。
*/
new 父类构造器(实参列表){
          //匿名内部类类体部分
}
 
 
 
使用匿名内部类(这里举例第一种情况:实现借口)
 
//定义借口
interfance Product {
          public double getPrice();
          public String  getName();
}
 
 
public class Anonymous
{
          public void test (Product p){
                  System.out.println(p.getName()+"--------"+p.getPrice());
          }
          public static void main(String [ ] args ){
                Anonymous as= new Anonymous ();
                  as.test(new Product( )/**此处实现接口并实现抽象方法***/ {
                           public double getPrice( )/**实现方法**/{
                                return 8888;
                          }
                         public String getName( )/**实现方法**/{
                                 return "I can do it ";
                          }
                });
        }
}
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值