`
azheng270
  • 浏览: 93008 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

JAVA 内部类的简单总结

阅读更多

定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。static的内部类行为上象一个独立的类,非static在行为上类似类的属性或方法且禁止声明static的方法。内部类可以访问外部类的所有方法与属性,但static的内部类只能访问外部类的静态属性与方法。

外部类按常规的类访问方式使用内部类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。如:
pinner p = new pinner();
p.index = 20;
p.Print();
---- 这种方式适合外部类的非static方法;

pouter po = new pouter();
pinner pi = po.new pinner();
pi.index = 40;
pi.Print();
---- 这种方式适合外部类的static方法;

内部类类似外部类的属性,因此访问内部类对象时总是需要一个创建好的外部类对象。内部类对象通过‘外部类名.this.xxx’的形式访问外部类的属性与方法。如:
System.out.println("Print in inner Outer.index=" + pouter.this.index);
System.out.println("Print in inner Inner.index=" + this.index);

如果需要在其他类中访问内部类,可以使用:
(1)外部类提供创建内部类的方法供其他类使用。如:
// 外部类
pinner getInner()
{
return new pinner();
}

// 其他类
pouter.pinner pi = po.getInner();
pi.Print();

(2)直接创建内部类的对象。如:
pouter po = new pouter();
pouter.pinner pi = po.new pinner();
pi.Print();

内部类可以声明在外部类的方法中或语句块中。如果内部类需要访问包含它的外部类方法或语句块的局部变量或参数,则该局部变量或参数必须是final的。外部类的其他方法、其他类无法访问声明在方法内部或块内部的内部类。

如果一个类继承内部类,则创建该类的对象时需提供一个外部类的对象作为构造方法的参数。如:
class Car
{
class Wheel
{

}
}

class SuperWheel extends Car.Wheel
{
SuperWheel(Car car)
{
car.super();
}

public static void main(String [] args)
{
Car car = new Car();
SuperWheel wl = new SuperWheel(car);
}
}

如果创建命名的内部类没有多少实际意义时,可以创建匿名的内部类。比如使用内部类实现接口的功能(如事件处理器、适配器等),而功能的差异较大,需要根据实际的情况创建相应的内部类时,可以使用匿名内部类。简单的示例如下:
interface WebView
{
void doGet();
}

class A
{
WebView ShowName()
{
return new WebView()
{
void doGet()
{
System.out.println("Name");
}
};
}

WebView ShowCode()
{
return new WebView()
{
void doGet()
{
System.out.println("Code");
}
};
}
}

最后,JAVA 内部类还有一个作用,那就是实现JAVA的多继承。JAVA本身是不允许多继承的,如果我们想一个类继承多个基类,就可以使用内部类。通过内部类分别继承一个基类,外部类创建内部类的对象,并使用内部类的方法,变相地实现了多继承。

分享到:
评论

相关推荐

    Java内部类总结

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

    java 内部类应用

    总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免过度依赖内部类导致代码难以理解和维护。在实际项目中,应根据具体需求选择合适的设计模式。

    Java内部类总结.pdf

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

    java 匿名内部类的使用规范

    Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不需要定义一个单独的类的情况下创建类的实例。这在处理回调、事件监听、单例模式以及其他需要短时间内定义一个简单类的情况时非常有用。本篇文章将...

    内部类知识总结3--匿名内部类

    这篇总结将深入探讨匿名内部类的相关知识点。 1. **匿名内部类的概念** 匿名内部类是内部类的一种特殊形式,它没有类名,常用于一次性创建的对象,特别是在需要实现一个接口或继承一个类,但又不需要额外的方法时...

    Java中的内部类总结.doc

    匿名内部类是在没有名称的情况下定义的内部类,通常用于快速实现接口或继承类的简单情况。它们常用于事件监听器和回调机制中,可以简化代码,但不能包含任何静态声明。 5. **内部类的作用**: - **多态性增强**:...

    Java内部类基础笔记

    Java内部类是Java语言的一个特色特性,它允许我们在一个类的内部定义另一个类。这种设计模式在很多场景下非常有用,比如实现事件监听、回调机制或者封装特定逻辑。本篇笔记将详细介绍Java中的四种内部类:普通内部类...

    java中的匿名内部类总结

    总结一下,Java中的匿名内部类提供了一种简洁的方式来实现接口或扩展已有类,常用于事件处理、回调函数以及在特定场景下替代新的类定义。同时,了解Java Web开发中的Cookie、Session、localStorage和sessionStorage...

    java内部类解析.pdf

    总结来说,Java内部类提供了在单一类中组织代码的强大工具,使得可以实现更复杂的设计模式和封装逻辑。然而,过度使用内部类可能导致代码混乱,因此应谨慎使用,并确保其符合良好的编程实践和可读性标准。

    Java中的内部类和匿名类

    Java 中的内部类和匿名类 Java 中的内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在 C++ 里也有,那就是嵌套类(Nested Class)。内部类从表面上看,就是在类中又定义了一个类,而实际上并没有那么...

    Java内部类

    ### Java内部类详解 在Java编程语言中,内部类(Inner Class)是一种非常重要的概念,它使得类的设计更加灵活和高效。本文将详细介绍Java内部类的相关知识点,包括其定义、分类以及应用场景等。 #### 一、Java内部...

    JavaDemo14032003(内部类).zip

    总结来说,Java内部类是一个强大的工具,它可以增强代码的封装性和复用性,尤其是在处理复杂的对象关系和事件监听等场景。通过深入学习和实践,开发者能够更灵活地运用这一特性,提高代码质量。在这个压缩包中的Java...

    Java集合类详解总结

    ### Java集合类详解总结 在Java编程中,集合框架(Collection Framework)是处理一组对象的强大工具,它提供了标准的数据结构来存储和操作这些对象。Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`...

    使用Java内部类实现一个简单的购物车系统.txt

    ### 使用Java内部类实现一个简单的购物车系统 #### 背景介绍 本文将详细介绍一个使用Java编程语言实现的简单购物车系统。该系统通过利用内部类的方式,实现了商品的添加与移除功能,并能够计算购物车中的商品总价。...

    Java中inner_class内部类

    本文将深入探讨Java内部类的概念、类型、用途和实际应用。 一、内部类的分类 1. 成员内部类:这是最常见的一种内部类,定义在类的成员位置,可以是静态或非静态。非静态内部类可以直接访问外部类的私有成员,而...

    java期末复习抽象类与接口,内部类,知识点.zip

    复习时,可以详细阅读`Java抽象类.docx`来理解抽象类的定义、用途和实例化规则,通过`Java接口.docx`学习接口的定义、实现方式以及多继承的特点,`Java内部类.docx`将帮助你掌握不同类型的内部类及其应用场景。...

    java学习笔记(内部类)汇集

    3. **代码简洁性**:当需要定义简单的回调函数时,使用匿名内部类可以使代码更加简洁。 #### 四、内部类示例分析 接下来,我们将通过一个具体的例子来理解如何使用内部类以及它们与普通类的区别。 ##### 普通类...

    java总结大全--包括所有java基础知识点

    本节将对Java基础知识点进行总结,涵盖变量、数据类型、运算符、控制流程、方法、数组、内部类、继承、多态、接口、异常处理等知识点。 变量和数据类型 在Java中,变量是用来存储值的符号名称。Java提供了八种基本...

Global site tag (gtag.js) - Google Analytics