内部类概念
所谓内部类(inner class),顾名思义,就是将一个类定义在定义在另一个类的内部。内部的类称之为内部类
public class outer{
class inner{
//
}
}
特点
- 内部类可以很好的实现隐藏,可以使用protected、private修饰符。
- 内部类可以直接访问外部类的所有成员,包括私有的成员。
- 外部类不能直接访问内部类的成员,必须首先建立内部类的对象才可以访问。
- 内部类可以解决一些问题,比如间接地实现多继承。可以避免修改接口而实现同一个类中两个同名方法的调用。
MethodInnerClassDemo
abstract class B {
abstract void method();
}
interface C{
void method();
}
class A extends B implements C{
@Override
public void method() {
System.out.println("method");
}
private class CClass implements C{
@Override
public void method() {
System.out.println("method interface");
}
}
public void metho2(){
new CClass().method();
}
}
成员内部类及应用
特点:
- 成员内部类属于外部类的实例成员。相当于成员变量或方法。可以用public private protected default来修饰。在成员内部类中访问外部类的成员方法和属性,要使用“外部类名.this.成员方法”和“外部类名.this.属性”的形式。
- 创建成员内部类的实例使用“外部类名.内部类名 实例名 = 外部类实例名.new 内部类构造方法(参数)”的形式。
限制:
- 成员内部类不能与外部类重名。
- 不能在成员内部类中定义static属性、方法和类(static final 形式的常量定义除外)。因为一个成员内部类实例必然与一个外部类实例关联,static成员完全可以移动其3外部类中去。
静态内部类及应用
特点:
- 使用static修饰的成员内部类叫静态内部类。
- 静态内部类跟外部类没有任何关系,只是在生成类名和类定义时有影响。静态内部类可以看作与外部类平级的类。使用方式与外部类平级的类完全相同。
- 创建静态内部类的实例使用 外部类名.内部类名 实例名 = new外部类名.内部类名(参数)。
限制:
- 静态内部类不能与外部类重名。
- 静态内部类不嫩访问外部类的非静态属性和方法。外部类不能访问内部类的非静态属性和方法。
匿名内部类及应用
特点:
- 匿名内部类是没有名称的内部类,没有办法引用它们。必须在创建的时候,作为new语句的一部分来声明并创建它们的实例。
- 匿名内部类必须继承一个类(抽象的、非抽象的都可以)或者实现一个接口。如果父类(或者父接口)是抽象类,则匿名内部类必须实现其所有抽象方法。
- new interface/superclass(){//类体},这种形式的new语句声明一个新的匿名类,它对一个给定的类进行拓展,或者实现一个给定的接口,并同时创建该匿名类的一个新实例。
局部内部类及应用
特点:
- 定义在代码块{}、方法体中的类叫局部内部类。
- 局部内部类访问外部类的属性和方法使用“外部类名.this.属性名”和“外部类名.this.方法名(参数)”的形式。
- 对外部世界完全隐藏,只能在其作用域内生成对象。
限制:
- 局部类不能加访问修饰符,因为它们不是类成员。
- 局部内部类不能跟外部类重名。
- 局部内部类访问作用域内的局部变量,该局部变量需要使用final修饰。
内部类使用
不修改父类和接口的方法来分别调用同名的方法
间接实现多继承
静态内部类使用
分享到:
相关推荐
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
Java JDK6学习笔记是针对Java编程语言初学者和进阶者的一份宝贵资源,它涵盖了Java的基础语法,并通过经典且易于理解的实例进行讲解。在本文中,我们将深入探讨Java JDK6中的关键概念和特性,以帮助你更好地理解和...
本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java 5.0引入了泛型,它允许在定义类、接口和方法时指定类型参数,从而实现类型安全的集合。泛型消除了强制类型转换的需要,...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
内部类(包括成员内部类、局部内部类、匿名内部类)是Java特有的特性,允许在类内部定义其他类。 【Java高级】 Java高级部分涵盖了更复杂的特性和技术,包括: 1. **反射**:Java反射机制允许在运行时检查类的信息...
《Java JDK 8学习笔记》是由林信良教授在2015年3月出版的一本详尽解析Java SE 8新特性的书籍,由清华大学出版社发行。这本书共计643页,内容完整且清晰,包含目录和书签,便于读者高效地查阅和学习。 在Java JDK 8...
### Java学习笔记——内部类详解 #### 一、引言 Java中的内部类是一个非常有用但又容易让人感到困惑的概念。内部类本质上是在另一个类的内部定义的类,它可以访问外部类的所有成员变量和方法,甚至是私有成员。...
Java JDK 5.0是Java发展历程中的一个重要里程碑,它引入了许多新特性,极大地提升了开发效率和代码质量。..."良葛格Java JDK 5.0学习笔记"这份资料应该会详细解释这些概念,为初学者提供宝贵的参考资料。
Java开发学习笔记主要针对的是初学者,旨在帮助他们掌握Java编程的基础知识。下面将详细讲解Java开发中的核心概念和步骤。 一、Java环境变量设置 在开始Java编程之前,我们需要安装Java Development Kit (JDK)并...
### Java实战经典学习笔记知识点概览 #### 一、Java概述及开发环境搭建 - **Java概述** - Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年发布。 - Java的设计目标是“一次编写,到处运行”,这...
### Java设计模式学习笔记——外观模式(Facade Pattern) #### 概述 设计模式是软件工程领域中一种解决常见问题的可复用解决方案。在Java开发过程中,掌握设计模式能够帮助开发者更好地组织代码结构,提高代码的...
在这个"良葛格Java JDK 5.0学习笔记ch05"中,我们将深入探讨其中的关键知识点。 一、泛型 Java 5.0引入了泛型,这是一项强大的类型安全机制,允许在编译时检查类型。泛型可以应用于类、接口和方法,通过指定参数...
Java面试题及学习笔记概述 Java作为一种广泛应用的编程语言,其面试题库广泛且深入,涵盖了从基础语法到高级特性的各个层面。本篇将基于常见的Java面试问题,结合学习笔记,深入探讨Java的核心概念和技术。 一、...
以下是对"Javajdk5学习笔记"中可能包含的知识点的详细解析: 1. **自动装箱与拆箱**:JDK 5引入了自动装箱和拆箱功能,使得基本类型和它们对应的包装类之间可以无缝转换,提高了代码的简洁性。例如,`Integer i = ...
《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...
**Java JDK 7学习笔记概述** Java JDK 7(Java Development Kit 7)是Java编程语言的一个重要版本,由Sun Microsystems(后被Oracle公司收购)开发,并于2011年7月28日正式发布。这个版本引入了一系列新特性、改进...