Java局部内部类原理与用法实例分析
本文实例讲述了Java局部内部类原理与用法。分享给大家供大家参考,具体如下:
一 点睛
如果把一个内部类放在方法中定义,那么这个内部类就是一个局部内部类,局部内部类仅在方法里有效。
由于局部内部类不能在外部类的方法以外的地方使用,因此局部内部类也不能使用控制符合static修饰符修饰。
如果需要用局部内部类定义变量、创建实例或派生子类,那么都只能在局部内部类所在的方法中进行。
二 代码
public class LocalInnerClass { public static void main(String[] args) { // 定义局部内部类 class InnerBase { int a; } // 定义局部内部类的子类 class InnerSub extends InnerBase { int b; } // 创建局部内部类的对象 InnerSub is = new InnerSub(); is.a = 5; is.b = 8; System.out.println("InnerSub对象的a和b实例变量是:" + is.a + "," + is.b); } }
三 运行
InnerSub对象的a和b实例变量是:5,8
四 说明
编译完成后,会生成LocalInnerClass.class、LocalInnerClass$1InnerBase.class和LocalInnerClass$1InnerSub.class三个文件,之所以局部内部类有数字是因为同一个类里可能有两个以上的同名的局部内部内(处于不同的方法中)。
局部内部内作用域太小,不利于多次复用,因此在开发中很少使用局部内部类。
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
相关推荐
-
JAVA 内部类详解及实例
JAVA 内部类 一.什么是内部类? 一个类的定义放在另一个类的内部,这个类就叫做内部类 二.内部类有那些特性? 1.内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 . 2.内部类不能用普通的方式访问.内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 . 3.内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 . 三.内部类有哪几种? 1.成员内
-
Java中内部类使用方法实战案例分析
本文实例讲述了Java中内部类使用方法.分享给大家供大家参考,具体如下: 一 点睛 分三种情况讨论内部类的使用: 1 在外部类内部使用内部类 2 在外部类以外使用非静态内部类 3 在外部类以外使用静态内部类 二 在外部类内部使用内部类 可以直接通过内部类的类名来定义变量,通过new调用内部构造器来创建实例. 不要在外部类的静态成员(包括静态方法和静态初始化块)中使用非静态内部类,因为静态成员不能访问非静态成员. 三 在外部类以外使用非静态内部类 1 点睛 private 修饰的内部类只能在外部类
-
java匿名内部类实例简析
匿名类是不能有名称的类,所以没办法引用它们.必须在创建时,作为new语句的一部分来声明它们.这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口.它还创建那个类的一个新实例,并把它作为语句的结果而返回.要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体.如果匿名类对另一个类进行扩展,它的主体可以访问类的成员.覆盖它的方法等等,这和其他任何标准的类都是一样
-
java中关于内部类的使用详解
内部类访问规则 •内部类可以直接访问外部类中的成员,包括私有.访问格式:外部类名.this•外部类要访问内部类必须创建内部类对象.•内部类在成员位置上,可以被成员修饰符修饰. 复制代码 代码如下: public class InnerClassDemo1 { public static void main(String[] args){ Outer ou =new Outer(); ou.method();// 4 3 Outer.Inn
-
java 内部类(匿名类,匿名对象,静态内部类)详解及实例
内部类的介绍 定义在另外一个类中的类,叫内部类 成员内部类 1..new 创建成员内部类必须先创建外部类的实例,然后通过.new 创建内部类的对象 2..this 可以通过外部类的类名.this去访问外部类的所有属性和方法. public class Test1 { String name = "asnd"; public static void main(String[] args) { Test1 test1 = new Test1(); Inner mInner = test1.
-
Java内部类应用之静态内部类应用示例
本文实例讲述了Java内部类应用之静态内部类.分享给大家供大家参考,具体如下: 一 点睛 如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象.因此使用static修饰的内部类被称为类内部类,也称为静态内部类. static关键字不可修饰外部类,但可修饰内部类. 二 实战--静态内部类不能访问外部类的实例成员,只能访问外部类的类成员 1 点睛 静态内部类可以包含静态成员,也可以包含非静态成员.根据静态成员不能访问非静态成员的规则,静态内部类不能访问外部类的
-
Java内部类之间的闭包和回调详解
前言 闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外围类对象的引用,在此作用城内,内部类有权操作所有的成员,包括private成员. Java最引人争议的问题之一就是,人们认为Java应该包含某种类似指针的机制,以允许回调(callback).通过回调,对象能够携带一些信息,这些信息允许它在稍后的某个时刻调用初始的对象.如果回调是通
-
在java中 利用匿名内部类进行较简洁的双括弧初始化的方法
java的collection集合框架如set.map.list没有提供任何简便的方法供初始化.而每次建立集合都要将值一个个add进去.如 复制代码 代码如下: Set<Character> letter=new HashSet<Character>();letter.add('a');letter.add('b');//... 非常繁琐. 但用匿名内部类的话.可以略为简便些. 复制代码 代码如下: Set<Character> letter=new HashSet&l
-
Java局部内部类和匿名内部类定义与用法实例分析
本文实例讲述了Java局部内部类和匿名内部类.分享给大家供大家参考,具体如下: 一 局部内部类 1 点睛 内部类不仅可以在类中定义,也可以定义在方法体或作用域内.这样的内部类作用范围仅限于方法体或特定的作用域内,因此也称为局部内部类. 2 代码 class InnerClassTest { int score = 95; void inst() { class Inner { void display() { System.out.println("成绩: score = " + sc
-
Java内部类的继承(全)
下面通过实例代码给大家分享下有关JAVA内部类的继承,具体详解如下: Java内部类的构造器必须连接到指向其外围类对象的引用(构造内部类必须给它一个外部类对象的引用,内部类依赖于外部类对象),所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用. 因为,在导出类实例化时,并不存在一个外围类对象,以让导出类的实例去连接到它. 所以,我们需要创建一个外围类,然后用一个特定的语法来表明内部类与外围类的关系. 在下例子中,需要给导出类InheritInner一个来自内部类的外围类中的
-
C#匿名委托和Java匿名局部内部类使用方法示例
测试代码 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace CSharpStudy{ class Program { static void Main(string[] args) { int i = 0; Action
随机推荐
- C++计算图任意两点间的所有路径
- 通过使用正确的search arguments来提高SQL Server数据库的性能
- JavaScript面向对象编写购物车功能
- 脚本编程 4 驱动器
- php微信公众平台开发之微信群发信息
- php开启openssl的方法
- Android中使用ZXing生成二维码(支持添加Logo图案)
- 详解Mysql命令大全(推荐)
- JS中去掉array中重复元素的方法
- linux下安装配置Memcache和PHP环境的实现
- Sqlserver事务备份和还原的实例代码(必看)
- MySql增加用户、授权、修改密码等语句
- 简单学习Android Socket的使用方法
- 详解spring boot配置单点登录
- Java经典设计模式之适配器模式原理与用法详解
- Java设计模式之适配器模式简介
- php中全局变量global的使用演示代码
- c#获取季度时间实例代码(季度的第一天)
- Java+opencv3.2.0实现重映射
- Python 实现字符串中指定位置插入一个字符