zoukankan      html  css  js  c++  java
  • Java 中的 匿名类

    什么是内部类?

    在一个类中定义另一个类,这样定义的类称为内部类。包含内部类的类称为内部类的外部类。

    如果想要通过一个类来使用另一个类,可以定义为内部类。

    内部类的外部类的成员变量在内部类仍然有效,内部类中的方法可以调用外部类的方法。不论静态还是非静态的,内部类都可以直接调用外部类中的属性。

    内部类的类体中不可以声明类变量和类方法。

    内部类可以由外部类使用外部类中在函数中创建内部类的对象完成。

    如果内部类的权限是非私有的,非静态的,就可以在其外部其他程序中被访问到,通过创建外部类对象访问内部类

    如果内部类是静态的,非私有的,静态成员可以直接类名调用,非静态成员通过创建外部类对象使用。

    class Outer{
        int a=5;
        static int b=6;
        void show() {
            System.out.println("hello world");
        }
        class Inner{
            void use() {
                System.out.println(a);//5
                System.out.println(b);//6
                show();//hello world
                
            }
        }
        void create() {
            new Inner().use();
        }
    
    }
    
    public class Demo {
    
        public static void main(String[] args) {
            new Outer().create();
            Outer.Inner oi=new Outer().new Inner();
            oi.use();
    
        }
    
    }

    内部类的字节码不一样,编程外部类$内部类名

    将内部类定义在局部位置上。可以访问外部类的所有成员,如果内部类是静态的,那么声明周期与普通的 static 没有区别。

    匿名类

     匿名类:就是没有名称的类,其名称由Java 编译器给出,匿名类就是利用父类的构造函数和自身类体构成的一个类。

     

    父类是子类集成或者要实现的外部类或者接口。

    匿名类可以继承父类的方法,也可以重写父类的方法。

    匿名类可以访问外部类的成员变量和方法

    匿名类由于是一个 new 的结果,所以其实可以赋值给一个父类的对象。分为俩类:成员匿名与局部匿名类

  • 相关阅读:
    Android Studio在项目中添加assets资源目录
    Android Studio向项目中导入jar包的方法
    Android Studio 配置 androidAnnotations框架详细步骤
    Android退出所有Activity最优雅的方式
    Android数据存储之SQLite使用
    Android数据存储之SharedPreferences使用
    三种实现Android主界面Tab的方式
    Android热门网络框架Volley详解
    Android必学之数据适配器BaseAdapter
    23种设计模式UML图
  • 原文地址:https://www.cnblogs.com/baizhuang/p/11393778.html
Copyright © 2011-2022 走看看