内部类引用外部类方法,逻辑有些绕。
1.内部类生成对外部类对象的引用
外部类名称+.this;
2.外部类提供实例化内部类的方法,因为拥有外部类对象之前是不能创建内部类对象的,内部类对象会暗暗地连接到创建她的外部类对象中。
相当抽象的图像说明:
代码:
public class NotThis { public void fun() { System.out.println("function in out class"); } private class Inner { //內部类中生成对外部对象的引用 public NotThis outer() { return NotThis.this; } } //外部类中提供实例化内部类的方法 public Inner inner() { return new Inner(); } public static void main(String args[]) { NotThis dotThis=new NotThis(); NotThis.Inner inner=dotThis.inner();//內部類不能存取。 // NotThis.Inner inner=dotThis.new inner();//可取方法 // NotThis.Inner inner=new NotThis.Inner(); 不可取 inner.outer().fun(); } }
相关推荐
### Java内部类解析 #### 什么是Java内部类? 在Java中,内部类是一个在其另一个类的内部声明的类。这种内部关系意味着内部类是外部类的一部分,并且可以访问外部类的所有成员,包括私有成员。这为Java提供了一种...
Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。自Java 1.1引入内部类以来,这种特性一直备受争议。内部类提供了访问外部类私有成员的能力,但如果不恰当使用,可能导致代码难以...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java内部...
Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。自Java 1.1引入内部类以来,这种特性一直备受争议。一方面,它提供了更高级别的封装和抽象,另一方面,如果使用不当,可能导致...
5. **静态方法调用**:在静态内部类中可以直接访问外部类的静态方法和变量,但是无法直接访问非静态成员。 6. **非静态方法调用限制**:如果需要访问外部类的非静态方法或变量,则必须通过外部类的对象引用来进行...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类在Java中主要用于创建更加紧密耦合的对象,尤其是在处理事件处理和封装时。虽然在J2EE编程中使用不多,但在GUI编程中...
### JAVA内部类详解 #### 引言 自Java1.1版本起,内部类的引入为面向对象编程提供了更为灵活的封装机制。然而,如同所有强大的特性,内部类的不当使用可能导致代码复杂度的增加,甚至产生维护上的困难。本文旨在...
- `nn()`方法中,外部类通过`new Inner()`创建了内部类的一个实例,并调用了`print()`和`aa()`方法。 - `bb()`方法是一个字符串处理方法。 4. **主函数**: - `Test`类中的`main`方法创建了一个`Outer`类的实例...
Java中的内部类是一种特殊类型的类,它被定义在另一个类的内部。内部类有四种主要类型:成员内部类、静态嵌套类、方法内部类和匿名内部类。 1. 成员内部类:这类内部类就像外部类的成员,可以访问外部类的所有成员...
5. **调用私有内部类的方法**: - `Method[] m = clss.getDeclaredMethods();`:获取所有声明的方法。 - `m[0].setAccessible(true);`:设置为可访问。 - `m[0].invoke(oo, new ArrayList());`:调用私有内部类的...
Java内部类是Java语言的一个特色特性,它允许我们在一个类的内部定义另一个类。这种设计模式在处理事件监听、匿名类、线程等场景时非常有用。本篇将深入探讨四种类型的内部类:成员内部类、局部内部类、匿名内部类和...
在 Java 中,`static` 关键字用于声明类成员(变量、方法和代码块)为静态成员,具有以下特点: - **静态变量**:属于整个类而不是特定的对象实例,所有对象共享同一份副本。 - **静态方法**:同样属于整个类,可以...
- 内部类的对象可以拥有指向外部类对象的引用,使得内部类能够访问外部类的状态。 2. **在C++中模拟内部类**: - 在C++中,可以通过将内部类定义为外部类的一个成员类型来实现类似的功能。 - 使用嵌套类...
静态内部类是一种特殊的嵌套类,它不持有对外部类的引用,可以在没有外部类实例的情况下创建。 `final`关键字用于声明不可变的变量、方法和类。对于变量,一旦赋值后不能更改;对于方法,`final`方法不能被子类重写...
内部类和枚举类在Java编程中是两个重要的高级特性,它们为代码设计提供了更丰富的结构和灵活性。本文将深入探讨这两个概念,并结合提供的压缩包文件`demo8`、`task03`和`demo7`中的实例进行解析。 ### 一、内部类 ...
在Java编程中,final关键字扮演着至关重要的角色,它用于声明不可变的变量、方法以及类,以确保代码的稳定性和安全性。以下是关于final关键字的深入解析: 1. **final类**: 当一个类被声明为final时,这意味着这...
静态嵌套类主要用于当内部类不需要引用外部类实例的情况,而内部类则提供了更紧密的封装机制,使得内部类可以直接访问外部类的成员。在实际开发过程中,根据具体需求选择合适的嵌套类类型是非常重要的。
invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...
在 Java 编程中,创建一个类是定义对象的基础,它是面向对象编程的核心。在这个例子中,我们创建了一个名为 `Student` 的类,用于表示学生实体。类是封装数据和行为的一种方式,允许我们将相关属性和操作组合在一起...