随堂笔记160316内部类

来源:互联网 发布:怀特塞德数据 编辑:程序博客网 时间:2024/09/21 09:06

一、内部类

1.代码:

class Person{    private String name;    class Heart{        public void jump(){            System.out.println("心脏在跳动");        }    }}

2.创建内部类实例:

class Person{    private String name;    class Heart{        public void jump(){            System.out.println(name + "心脏在跳动");        }    }    public Heart getHeart(){    //第一种创建内部类对象的方法        return new Heart();    }}   class Test{    public static void main(String[] args){        Person.Heart inner = new Person().getHeart();//通过第一种方式获取        Person p = new Person();        Person.Heart = new p.Heart();    }}

总结

  1. 内部类可以访问外部类的私有属性
  2. 内部类可以体现包含关系

二、静态内部类

1.代码:

class Outer{    static class Inner{        public void test(){            System.out.pintln("这是测试");        }    }}

2.静态内部类实例化:

class Test{    public static void main(String[] args){        new Outer.Inner().test();//访问了内部类的test()方法    }}

静态内部类只能访问静态属性

三、方法里的内部类

1.代码:

class Outer{    public void test(final int age){        class Inner{            public void innerTest(){                System.out.println(age);            }        }        new Inner().innerTest();    }}class Test{    public static void main(String[] args){        new Outer().test();    }}

总结:

  1. 不可能从外部去调用方法中的内部类,只能通过在方法里调用这个方法里的内部类
  2. 内部类接收外部类方法的形参时必须定义为final,但是在jdk1.7以后就可以不用写final

四、匿名内部类

1.代码:

interface AA{    void test();}Class Test{    public static void main(String[] args){        new AA(){            public void test(){                System.out.println("我在测试匿名内部类");            }        }.test();    }}

总结:

  1. 定义匿名内部类需要一个接口
  2. 一般匿名内部类只用一次,用的时候就去实现接口,灵活

包装类

0 0