对此总是多少有点迷惑——private关键字作用在内部类(假设为A)的成员上时,对于包含该内部类(A)的类(假设为B)来说形同虚设,如果还有一个类(假设为C)包含这个包含类(B)时,那么类A中的private对于C同样形同虚设。
下面的代码证明了这一点。个人理解是:内部类对于 包含它的类 来说毫无隐私——此处包含至少嵌套了一级。
class FirstLevel{
private class SecondLevel{
private int i=10;
private void say(){
System.out.println("private SecondLevel.say()");
}
private class ThirdLevel{
private int i=12;
private void say(){
System.out.println("private ThirdLevel.say()");
}
}
}
void haha(){
System.out.println("FirstLevel.haha() BEGIN:");
SecondLevel secondLevel=new SecondLevel();
SecondLevel.ThirdLevel thirdLevel=secondLevel.new ThirdLevel();
System.out.println("SecondLevel's private i"+secondLevel.i);
secondLevel.say();
System.out.println("ThirdLevel's private i :"+thirdLevel.i);
secondLevel.say();
System.out.println("FirstLevel.haha() END.\n");
}
public static void main(String[] arguments){
FirstLevel firstLevel=new FirstLevel();
firstLevel.haha();
FirstLevel.SecondLevel secondLevel=firstLevel.new SecondLevel();
secondLevel.say();
FirstLevel.SecondLevel.ThirdLevel thirdLevel=secondLevel.new ThirdLevel();
thirdLevel.say();
}
}
分享到:
相关推荐
2. 局部内部类:在方法中定义的内部类,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,和此外围类所有的成员。 3. 静态内部类:静态内部类是指在外部类的静态成员中...
内部类的作用域仅限于其外部类,可以访问外部类的成员,同时又能保护类的封装性。 目标: 通过这个源码资源,你将学会以下内容: - 内部类的定义和语法 - 如何在外部类中访问和操作内部类 - 不同类型的内部类(静态...
它可以访问外部类的所有成员(包括私有成员),同时也可以被外部类所访问。 2. **静态成员变量**:静态成员变量是类级别的变量,可以通过类名直接访问,不需要创建类的实例。 3. **反射**:反射是在运行时检查类、...
内部类能够自由地访问外部类的所有成员,包括私有成员,而外部类无法直接访问内部类的成员。这种特性使得内部类可以作为实现某些特定功能的工具,同时保持外部类的简洁性。 内部类有四种主要类型: 1. **成员内部...
外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。 二、静态嵌套类 静态嵌套类是指使用static关键字修饰的内部类。静态嵌套类可以访问外部类的静态成员变量,但不能访问非静态成员变量。...
Java 嵌套类和内部类详解 ...* 内部类可以访问外部类的成员变量和方法,但外部类不能直接访问内部类的成员变量和方法。 嵌套类和内部类是 Java 中一种非常重要的编程技术,可以使得代码更加简洁、灵活和可维护。
- 内部类可以访问外部类的所有成员,包括私有成员,这是因为内部类对象拥有对外部类对象的隐式引用。 - 匿名内部类不能包含静态成员(除了final static变量)。 - 匿名内部类不能有构造器,但可以通过初始化块来传递...
在外部类外访问内部类可以使用外部类对象来创建内部类对象,然后使用内部类对象来访问内部类的成员变量和成员方法。 创建非静态内部类的基本语法如下所示: class Wai { class Nei { // 内部类成员 } // 外部...
内部类是Java语言中的一种特殊类别,它可以访问外部类的所有成员变量和方法,包括私有的变量和方法。内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部类。每种内部类都有其特点和用途。
非静态内部类拥有对外部类的引用,可以直接访问外部类的所有成员,包括私有成员。而静态内部类不持有对外部类的引用,因此只能访问外部类的静态成员。 2. **内部匿名类**:内部匿名类没有名字,通常用于创建一次性...
它可以访问外部类的所有成员,包括私有成员,这是因为内部类持有对外部类的隐式引用。这种访问权限使得内部类可以方便地实现一些复杂的逻辑,如事件监听器。但需要注意的是,由于这种紧密耦合,内部类实例不能独立于...
Java成员内部类是一种在类内部定义的类,它可以访问外部类的所有成员,包括私有成员。成员内部类的使用在Java编程中具有独特的价值,它能够帮助我们更好地封装代码,提高代码的组织性和可读性。以下是关于Java成员...
内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...
成员内部类(也称为非静态内部类)是定义在一个外部类中的成员类,它可以访问外部类的所有成员变量和方法,包括私有成员。成员内部类的一个显著特点是它与外部类有着密切的联系,这使得它非常适合用来表达一种“整体...
3. **外部类访问内部类**:外部类可以通过“外部类对象.new 内部类()”的方式创建内部类对象。 4. **内部类访问外部类**:非静态成员内部类可以通过`this`关键字访问外部类中的成员变量和方法。如果外部类的方法中...
- 内部类可以访问外部类的所有成员,但外部类只能通过实例化内部类来访问内部类的公共成员。 - 静态内部类和成员内部类在内存管理上有差异,静态内部类不会引起外部类的实例化,而成员内部类会。 - 匿名内部类不能...
内部类和外嵌类之间存在着紧密的关系:内部类可以访问外嵌类的成员变量和方法,而外嵌类也可以使用内部类声明的对象作为其成员。内部类的类体中不能声明静态成员变量和静态方法。 匿名类是一种特殊的内部类,它可以...
- **非静态成员**:匿名内部类拥有对外部类的隐式引用,可以访问外部类的非静态成员,但必须通过`OuterClass.this`来明确指出。 3. **局部变量的final限制** 如果匿名内部类需要访问局部变量,那么这个局部变量...
内部类是定义在一个类内部的类,它可以访问外部类的所有成员,包括私有成员。内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类就像普通的类成员,可以有自己的访问修饰符;局部内部...
在Java编程语言中,内部类(也称为嵌套类)是一种特殊类型的类,它可以被定义在一个外部类的内部。内部类有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。本篇将主要讨论如何构造内部类对象以及如何...