`

Java内部类的可见性问题

 
阅读更多

关于Java的内部类的可见性问题,平时并未太注意。不过使用时,其实还是应该明确一点:就是关于内部类和他的外部类的可见性问题:private这种修饰符并不能阻止外部类直接访问到内部类中的private属性;反之亦然。

这里直接看代码会更清楚一些:

 

public class VisibilityTest {

    private String outerName;

    public String showInnerName(InnerClass innerClass){
        // Notice : innerName in InnerClass is "private"
        // But here can be accessed directly without using any public getter.
        return innerClass.innerName;
    }

    private static class InnerClass{
        private String innerName;
        // Notice : outerName in VisibilityTest is "private"
        // But here can be accessed directly without using any public getter.
        public String showOuterClass(VisibilityTest visibilityTest){
            return visibilityTest.outerName;
        }
    }

}

上面的代码不会有任何编译错误,事实上在Java中也是完全合法的。

关于内部类这种可见性的特点,在内部类访问外部类属性或者在外部类访问内部类属性,都相对来说更方便。

一个典型的应用场景是:在利用内部类实现懒加载方式的单例模式,具体可以参考这里。 

 

分享到:
评论

相关推荐

    关于Java变量的可见性问题Java开发Java经验技巧共

    在Java编程语言中,变量的可见性是一个至关重要的概念,它直接影响着...总的来说,Java变量的可见性是编程实践中不可或缺的一部分,熟练掌握这一概念能够帮助开发者写出更高效、安全的代码,避免潜在的bug和性能问题。

    探讨Java内部类的可见性

    这里需要探讨的是,外部类以及其他类的对象可以如何访问到某个内部类对象,即内部类的可见性问题。  下面是一个示例程序Out.java,其中包含了4个不同访问权限的内部类(private,default,protected,public),...

    浅谈Java内部类的四个应用场景

    ### Java内部类的应用场景 ...通过这种方式,我们不仅能够有效地管理数据库连接,还能够利用Java内部类的特性来增强代码的结构和安全性。这种模式适用于任何需要紧密耦合并且对外部不可见的类场景。

    Java内部类总结

    ### Java内部类详解 #### 一、什么是内部类? 内部类,顾名思义,是在另一个类的内部定义的类。这种独特的结构让内部类能够访问包含它的外部类的私有成员,包括变量和方法。这为编程提供了一种封装更紧密、功能更...

    java内部类使用总结

    Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类提供了增强封装的能力,使得内部类可以被隐藏在外部类中,仅对外部类可见,从而增加了代码的隐私性和安全性。同时,内部...

    java静态内部类(嵌套类)

    4. **访问修饰符**:静态内部类可以被声明为`public`、`protected`或`private`等访问修饰符,这使得我们可以根据需要控制其可见性。 5. **静态方法调用**:在静态内部类中可以直接访问外部类的静态方法和变量,但是...

    java 集合和内部类资料

    根据其可见性和位置,内部类可以分为以下几类: 1. 成员内部类:在类的主体中定义,与类的其他成员具有相同的权限。 2. 局部内部类:在方法、构造器或块中定义,仅在其定义范围内可见。 3. 匿名内部类:没有名字的...

    java内部类应用详解

    总之,Java内部类提供了一种灵活的方式来组织和管理代码,增加了代码的复用性和可读性,同时也让设计模式如策略模式、装饰器模式等在Java中得以轻松实现。理解并熟练运用内部类是提升Java编程能力的关键步骤之一。

    java内部类1

    总结来说,Java内部类提供了一种强大的工具,使得我们可以更灵活地组织代码,增强封装性和模块化。非静态内部类与静态内部类在依赖关系、创建方式和访问权限上有所不同,可以根据具体需求选择使用。局部内部类则适用...

    Java内部类总结.pdf

    Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类在Java中主要用于创建更加紧密耦合的对象,尤其是在处理事件处理和封装时。虽然在J2EE编程中使用不多,但在GUI编程中...

    Java内部类.pdf

    ### Java内部类详解 #### 一、定义及意义 **定义**:内部类是指在一个类的...综上所述,Java内部类为Java编程提供了强大的灵活性和封装性,理解并合理运用内部类的概念,可以帮助开发者写出更加高效、优雅的代码。

    JAVA内部类

    ### JAVA内部类详解 #### 引言 自Java1.1版本起,内部类的引入为面向对象编程提供了更为灵活的封装机制。然而,如同所有强大的特性,内部类的不当使用可能导致代码复杂度的增加,甚至产生维护上的困难。本文旨在...

    java内部类总结.pdf

    Java内部类是Java语言的一个独特特性,它允许一个类被定义在另一个类的内部。这种设计使得代码结构更加紧凑,同时也提供了对封装和抽象的新层次。内部类在J2EE编程中可能用得较少,但在GUI编程中尤其常见,主要用于...

    讲解Java中如何构造内部类对象以及访问对象

    在Java编程语言中,内部类(也称为嵌套类)是一种特殊类型的类,它可以被定义在一个外部类的内部。内部类有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。本篇将主要讨论如何构造内部类对象以及如何...

    内部类 匿名内部类 内部接口 对比说明

    内部类是Java编程语言中的一种特性,它允许我们在一个类的内部定义另一个类。这种设计模式在Android开发中尤其常见,因为它可以有效地管理代码和实现特定的功能。本文将详细探讨内部类、匿名内部类以及内部接口的...

    详细介绍java中的内部类共8页.pdf.zip

    以下是关于Java内部类的详细知识: 1. **类型划分**: - 成员内部类:定义在类的成员位置,可以访问外部类的所有成员,包括私有成员。 - 局部内部类:定义在方法或作用域内,仅在这个方法或作用域可见。 - 匿名...

    Java基础权限控制与final,内部类

    final关键字用于限制类、方法或变量的可变性,而权限控制则决定了类成员的可见性和可用范围。内部类则为类的设计提供了更多的灵活性,允许在类的内部实现更复杂的结构。理解这些概念对于编写高效、可维护的Java代码...

    Java 中包的概念,类的说明符与内部类19

    在Java中,类的说明符包括访问修饰符、静态修饰符、最终修饰符(final)、抽象修饰符(abstract)等,这些修饰符用来控制类的可见性和行为。例如,访问修饰符如public、private、protected以及默认(无修饰符),...

    几行代码带你彻底搞懂Java内部类

    Java内部类是Java语言的一个独特特性,它允许一个类被定义在另一个类的内部。这种设计模式提供了很多灵活性,比如可以更容易地访问外部类的私有成员,实现更复杂的抽象,以及在某些情况下模拟多重继承。以下是关于...

    JAVA类的特性资料

    11. **内部类**:Java支持类的嵌套,内部类可以作为外部类的成员,有成员内部类、局部内部类、匿名内部类和静态内部类等。内部类可以访问外部类的私有成员,增加了代码的复杂性和灵活性。 12. **包(package)**:...

Global site tag (gtag.js) - Google Analytics