zoukankan      html  css  js  c++  java
  • 内部类

    HOW:基本使用

     1 /**
     2 *需求1:在Outer类中定义内部类Inner
     3 *需求2:Inner内定义一个vistOuter方法访问Outer的x属性
     4 *需求3:Outer内定义一个vist方法访问Inner的vistOuter方法
     5 */
     6 class Outer
     7 {
     8     String x="outer";
     9     //定义内部类
    10     class Inner
    11     {
    12         String x="inner";
    13         //内部类可以不创建外部类的对象而访问外部类的属性Outer.this.属性
    14         void vistOuter(){
    15             System.out.println("访问到的是:"+Outer.this.x);
    16         }
    17     }
    18     //外部类不能直接访问内部类的方法,必须要先创建内部类的对象,通过该对象访问
    19     void vist(){
    20         //new Inner()看成一个对象,再.方法
    21         new Inner().vistOuter();
    22     }
    23 }

    注意事项

    1.内部类与外部类的成员同级,所以内部类可以被private修饰!

    2.内部类与外部类的成员同级,所以内部类可以访问外部类的成员变量,即使是private

    3.如果一个内部类中有静态变量或者静态声明,那么它必须是静态内部类=》如果是静态内部类,那么:Outer.Inner.x或Outer.Inner.function()可以访问其静态成员或方法

    4.静态类不能直接访问本类的成员或者方法:可以通过实例化之后再访问

     1 class Outer
     2 {
     3     static int x=5;
     4     //因为外部类中定义了静态成员,所以这里必须是静态内部类
     5     static class Inner
     6     {
     7         //本类非静态成员
     8         int x=1;
     9         //本类静态方法
    10         static void vistOuter(){
    11         System.out.println(Outer.x);
    12         }
    13     }
    14 }
    15 
    16 class StaticNeiBu 
    17 {
    18     public static void main(String[] args) 
    19     {
    20         //调用静态内部类的静态方法:输出外部类静态成员变量
    21         Outer.inner.vistOuter();
    22         //访问静态内部类的非静态成员x
    23         System.out.println(new Outer.Inner().x);
    24     }
    25 }
  • 相关阅读:
    Include Native *.so Library in APK With Android Studio
    listview
    随笔2
    const
    关于nginx配置gzip的相关说明
    关于gzip开启后压缩对比及相关性能
    webpack 打包性能优化
    关于pc端挂载移动端页面的问题
    vue-router 中的路径异步获取时导致的to报错问题
    关于cors及文件上传和下载在非开发环境导致的异常问题
  • 原文地址:https://www.cnblogs.com/erhai/p/4694015.html
Copyright © 2011-2022 走看看