码迷,mamicode.com
首页 > 编程语言 > 详细

java中的内部类

时间:2015-12-26 23:26:02      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:

内部类
   定义在类内部、方法内部或局部代码块内部的类
    (1)非静态内部类
        class A {
            class Inner {
            }
        }
        A a = new A();
        A.Inner inner = a.new Inner();
  
   (2)静态内部类
        class A {
            static class Inner {
            }
        }
        A.Inner inner = new A.Inner();
  
  (3)局部内部类
        *) 局部定义的类型,只能在局部使用
        *) 局部内部类的对象,可以转成父类型向外传递
        class A {
            Weapon a() {
                class Inner implements Weapon {
                }
               
                Inner i = new Inner();
                return i;
            }
        }
    
  (4)匿名内部类:这在写代码中经常用到的一种类,一般是指不声明对象名称,直接创建对象并重写方法一种做法。

    关于匿名内部类可以先看一个例子。

    先定义一个接口:

public interface Animal {
    void eat();
}

  然后看定义一个测试类,分别使用类局部内部类和匿名内部类。可以通过这个小例子看匿名内部类的使用方法。

public class Test1 {
    public static void main(String[] args) {
        Animal a1 = test1();
        a1.eat();
        
        Animal a2 = test2("老虎");
        a2.eat();
    }

    private static Animal test1() {
        class Tiger implements Animal{    //实现接口
            @Override
            public void eat() {
                System.out.println("是一种肉食动物!");    
            }
        }
        Tiger tiger = new Tiger();
        return tiger;
    }
    
    private static Animal test2(String name) {
        //Animal Tiger = new Animal() {//匿名内部类实现接口
            //@Override
            //public void eat() {
                //System.out.println(name+"是一种肉食动物");
            //}
        //};
        //return Tiger;
        return new Animal() {//匿名内部类更直接的写法
            @Override
            public void eat() {
                System.out.println(name+"是一种肉食动物");
            }
        };    
    }
}

 

java中的内部类

标签:

原文地址:http://www.cnblogs.com/fazheng/p/5079228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!