zoukankan      html  css  js  c++  java
  • 【0716课外作业】内部类

    一、

    内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。内部类的表现形式包括:静态内部类、成员内部类 、局部内部类、匿名内部类

    静态内部类指被声明为static的内部类,他可以不依赖内部类而实例,而通常的内部类需要实例化外部类,从而实例化。静态内部类不可以有与外部类有相同的类名。不能访问外部类的普通成员变量,但是可以访问静态成员变量和静态方法(包括私有类型)

    一个 静态内部类去掉static 就是成员内部类,可以自由的引用外部类的属性和方法,无论是静态还是非静态。但是不可以有静态属性和方法。
     1 public class Outer {
     2 private static int i = 1;
     3 private int j = 10;
     4 public static void outer_f1() { }
     5 
     6 
     7 public void outer_f2() { }
     8 
     9 
    10 // 静态内部类可以用public,protected,private修饰
    11 // 静态内部类中可以定义静态或者非静态的成员
    12 static class Inner {
    13 static int inner_i = 100;
    14 int inner_j = 200;
    15 static void inner_f1() {
    16 //静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)
    17 System.out.println("Outer.i" + i);
    18 outer_f1();
    19 }
    20 
    21 
    22 void inner_f2() {
    23 // 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)
    24 // System.out.println("Outer.i"+j);
    25 // outer_f2();
    26 }
    27 }
    28 
    29 
    30 public void outer_f3() {
    31 // 外部类访问内部类的静态成员:内部类.静态成员
    32 System.out.println(Inner.inner_i);
    33 Inner.inner_f1();
    34 // 外部类访问内部类的非静态成员:实例化内部类即可
    35 Inner inner = new Inner();
    36 inner.inner_f2();
    37 }
    38 
    39 
    40 public static void main(String[] args) {
    41 new Outer().outer_f3();
    42 }
    43 }

    二、 作用

    1)实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类。

    2)内部类可以继承(extends)或实现(implements)其他的类或接口,而不受外部类的影响。

    3)内部类可以直接访问外部类的字段和方法,即使是用private修饰的,相反的,外部类不能直接访问内部类的成员。

  • 相关阅读:
    IOS网络请求框架AFNetworking和ASIHttpRequest对比
    objc_msgSend消息传递学习笔记 – 消息转发
    iOS开发之OCR光学识别储蓄卡以及信用卡
    iOS 符号表恢复 & 逆向支付宝
    模仿某网站招聘列表
    Winform在线更新
    WCF局域网内使用代理无法访问解决方法
    【JavaScript】又一神器框架:linq.js
    数组去重和两个数组求交集
    【写给大家看的CSS】定位元素:使用position/display布局
  • 原文地址:https://www.cnblogs.com/yanglanlan/p/11198873.html
Copyright © 2011-2022 走看看