zoukankan      html  css  js  c++  java
  • Java中内部类简介

    内部类

    分类

    1. 成员内部类

    2. 局部内部类

    3. 匿名内部类

    4. 静态内部类

    成员内部类

    常见形式:

     public class external(){
         public class inside(){
             //这是一个内部类
         }
     }

    特点:

    1. 解决java没有多继承问题(内部类继承一个父类,外部类继承一个父类,变相的多继承)

    2. 成员内部类可以直接使用外部类的属性、方法(包括私有的)

    3. 当外部要实例内部类时,注意内部类的访问修饰符

    4. 当外部类与内部类的属性名或者方法同名时,内部的属性方法通过this.调用,外部的属性方法通过外部类名.this.调用

    局部内部类

    常见形式:

     public class external(){
         public void method(){
             class local(){
                 //这是一个局部内部类
             }
         }
     }

    特点:

    1. 无访问修饰符

    2. 局部内部类或者匿名内部类。如果要使用外部类的局部变量(包括形参,全局变量不包括)

      那么这个局部变量必须是final修饰的,及为常量

      JDK1.8之前必须声明final,JDK1.8之后编译时自动添加final

      (方法调用完会销毁,而局部内部类不会马上销毁,这是,如果调用的不是常量会出现异议)

    3. 局部内部类也会生成.class文件

    静态内部类

    常见形式:

     public class external(){
         public static class inside(){
             //这是一个静态内部类
         }
     }

    特点:

    1. 不可访问外部类中非静态的属性方法

    2. 静态内部类在外部中无法实例化

    3. 调用:

      外部类调用:外部类名.内部类名.静态方法名()

      外部调用:外部类的对象.内部类名.静态方法名()

    4. 注意static与class的位置关系,如果书写为 class static会编译报错

    匿名内部类】

    常见形式:

     //Anonymous是一个抽象类 , abstract_method是Anonymous中的一个抽象方法
     public abstract class Anonymous(){
         public abstract void abstract_method();
     }
     //External是一个类 , method是External中的方法,参数的类型是anonymous
     public class External(){
         public void method(Anonymous anonymous){
             }
         }
     }
     //要生成一个实现abstract_method方法的匿名内部类
     public class Test(){
         public static void main(String[] args){
             External external = new External();
             external.method(new Anonymous(){
                 //这是一个匿名内部类
                 public void abstract_method(){}
             });
         }
     }

    特点:

    1. 使用方便

    2. 不生成.Class文件

  • 相关阅读:
    通过百度地图API实现搜索地址--第三方开源--百度地图(三)
    对图片进行各种样式裁对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等剪:圆形、星形、心形、花瓣形等--第三方开源--CustomShapeImageView
    仿UC天气下拉和微信下拉眼睛头部淡入淡出--第三方开源--PullLayout
    【英语】Bingo口语笔记(14)
    【前端】HTML入门笔记
    【英语】Bingo口语笔记(13)
    【英语】20141013 生词
    【英语】20141011 生词
    【Android】Android 学习记录贴
    【英语】Bingo口语笔记(12)
  • 原文地址:https://www.cnblogs.com/-Archenemy-/p/12019726.html
Copyright © 2011-2022 走看看