关于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变量的可见性是编程实践中不可或缺的一部分,熟练掌握这一概念能够帮助开发者写出更高效、安全的代码,避免潜在的bug和性能问题。
这里需要探讨的是,外部类以及其他类的对象可以如何访问到某个内部类对象,即内部类的可见性问题。 下面是一个示例程序Out.java,其中包含了4个不同访问权限的内部类(private,default,protected,public),...
### Java内部类的应用场景 ...通过这种方式,我们不仅能够有效地管理数据库连接,还能够利用Java内部类的特性来增强代码的结构和安全性。这种模式适用于任何需要紧密耦合并且对外部不可见的类场景。
### Java内部类详解 #### 一、什么是内部类? 内部类,顾名思义,是在另一个类的内部定义的类。这种独特的结构让内部类能够访问包含它的外部类的私有成员,包括变量和方法。这为编程提供了一种封装更紧密、功能更...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类提供了增强封装的能力,使得内部类可以被隐藏在外部类中,仅对外部类可见,从而增加了代码的隐私性和安全性。同时,内部...
4. **访问修饰符**:静态内部类可以被声明为`public`、`protected`或`private`等访问修饰符,这使得我们可以根据需要控制其可见性。 5. **静态方法调用**:在静态内部类中可以直接访问外部类的静态方法和变量,但是...
根据其可见性和位置,内部类可以分为以下几类: 1. 成员内部类:在类的主体中定义,与类的其他成员具有相同的权限。 2. 局部内部类:在方法、构造器或块中定义,仅在其定义范围内可见。 3. 匿名内部类:没有名字的...
总之,Java内部类提供了一种灵活的方式来组织和管理代码,增加了代码的复用性和可读性,同时也让设计模式如策略模式、装饰器模式等在Java中得以轻松实现。理解并熟练运用内部类是提升Java编程能力的关键步骤之一。
总结来说,Java内部类提供了一种强大的工具,使得我们可以更灵活地组织代码,增强封装性和模块化。非静态内部类与静态内部类在依赖关系、创建方式和访问权限上有所不同,可以根据具体需求选择使用。局部内部类则适用...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类在Java中主要用于创建更加紧密耦合的对象,尤其是在处理事件处理和封装时。虽然在J2EE编程中使用不多,但在GUI编程中...
### Java内部类详解 #### 一、定义及意义 **定义**:内部类是指在一个类的...综上所述,Java内部类为Java编程提供了强大的灵活性和封装性,理解并合理运用内部类的概念,可以帮助开发者写出更加高效、优雅的代码。
### JAVA内部类详解 #### 引言 自Java1.1版本起,内部类的引入为面向对象编程提供了更为灵活的封装机制。然而,如同所有强大的特性,内部类的不当使用可能导致代码复杂度的增加,甚至产生维护上的困难。本文旨在...
Java内部类是Java语言的一个独特特性,它允许一个类被定义在另一个类的内部。这种设计使得代码结构更加紧凑,同时也提供了对封装和抽象的新层次。内部类在J2EE编程中可能用得较少,但在GUI编程中尤其常见,主要用于...
在Java编程语言中,内部类(也称为嵌套类)是一种特殊类型的类,它可以被定义在一个外部类的内部。内部类有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。本篇将主要讨论如何构造内部类对象以及如何...
内部类是Java编程语言中的一种特性,它允许我们在一个类的内部定义另一个类。这种设计模式在Android开发中尤其常见,因为它可以有效地管理代码和实现特定的功能。本文将详细探讨内部类、匿名内部类以及内部接口的...
以下是关于Java内部类的详细知识: 1. **类型划分**: - 成员内部类:定义在类的成员位置,可以访问外部类的所有成员,包括私有成员。 - 局部内部类:定义在方法或作用域内,仅在这个方法或作用域可见。 - 匿名...
final关键字用于限制类、方法或变量的可变性,而权限控制则决定了类成员的可见性和可用范围。内部类则为类的设计提供了更多的灵活性,允许在类的内部实现更复杂的结构。理解这些概念对于编写高效、可维护的Java代码...
在Java中,类的说明符包括访问修饰符、静态修饰符、最终修饰符(final)、抽象修饰符(abstract)等,这些修饰符用来控制类的可见性和行为。例如,访问修饰符如public、private、protected以及默认(无修饰符),...
Java内部类是Java语言的一个独特特性,它允许一个类被定义在另一个类的内部。这种设计模式提供了很多灵活性,比如可以更容易地访问外部类的私有成员,实现更复杂的抽象,以及在某些情况下模拟多重继承。以下是关于...
11. **内部类**:Java支持类的嵌套,内部类可以作为外部类的成员,有成员内部类、局部内部类、匿名内部类和静态内部类等。内部类可以访问外部类的私有成员,增加了代码的复杂性和灵活性。 12. **包(package)**:...