java内部类

来源:互联网 发布:创意手机壳 知乎 编辑:程序博客网 时间:2024/06/02 05:19

内部类的分类:

  1. 非静态内部类
  2. 静态成员内部类
  3. 局部内部类
  4. 匿名内部类

成员内部类

  • 定义:在一个外部类中有成员变量和成员方法,那么成员内部类就是整个一个类当成外部类的成员对待
  • 访问方式:内部类访问外部类,内部类可以直接访问外部类,包括私有成员变量,因为内部类拥有外部类的引用是类名.this
  • 外部类访问内部类,外部类访问外部类的成员,必须要建立内部类的对象,
  • 格式:外部类名.内部类名 = 外部类对象.内部类对象()
    存放位置:在外部类里,在外部类的成员方法外
public class Outer {    class Inter {        public void speak() {            System.out.println("我是内部类");        }    }}Outer.Inter inter = new Outer().new Inter();inter.speak();

静态内部类

  • 定义:就是在成员内部类的基础上加上static
  • 格式: 外部类名.内部类名 = 外部类.内部类对象()
public class Outer {    static class Inter {        public void speak() {            System.out.println("我是静态内部类");        }    }}Outer.Inter inter = new Outer.Inter();inter.speak();

局部内部类

  • 定义:在外部类成员方法中定义的内部类,他更像局部变量
  • 注意:
    • 方法内部类只能在定义该内部类的方法中使用,不可以在此方法外对其实例化
    • 与局部变量一样,方法的内部类修饰符只有final 和abstract
    • 静态方法内的方法内部类,静态方法是没有this引用的,因此在静态方法内的内部类遭遇同样的待遇,即:只能访问外部类的静态成员
public void Outer() {    class Inter {        public void speak() {            System.out.println("我是局部内部类");        }    }    Inter inter = new Inter();    inter.speak();}

匿名内部类

  • 没有名字的内部类,他是内部类的简化写法
  • 主要为了实现接口或者继承外部类
public interface Speak {    public void speak();}public class Outer {    public void speak() {        new Speak() {            public void speak() {                System.out.println("我是匿名内部类");            }        }.speak();    }}new Outer().speak();
0 0
原创粉丝点击