Java 在方法和作用域内的内部类
通常,如果所读写 的代码包含了内部类,那么它们都是"平凡的"内部类,简单并且容易理解,然而,内部类的语法覆盖了大量其它的更加难以理解的计数,例如可以在一个方法里或者在任意的作用域里定义内部类.这么做有两个理由
1)如前所述,你实现了某类型的接口,于是可以创建并返回对其的引用
2)你要创建一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的.
在后面的例子中前面的代码将被修改,以用来实现:
1)一个定义在方法中的类
2)一个定义在作用域内的类,此作用域在方法的内部
3)一个实现了接口的匿名类
4)一个匿名类,它扩展了有非默认构造器的类
5)一个匿名类,它执行字段初始化
6)一个匿名类,它通过实例初始化实现构造(匿名类不可以能有过构造器)
//: innerclasses/Destination.java package object; public interface Destination {String readLabel(); } ///:~ //: innerclasses/Parcel5.java // Nesting a class within a method. package object; public class Parcel5 {public Destination destination(String s) {class PDestination implements Destination {//在destination方法之外不可使用类,可以通过Destination使用private String label; //PDestination类的public方法
private PDestination(String whereTo) { label = whereTo; } public String readLabel() { return label; } } return new PDestination(s); } class PDestination //可以定义和PDestination重名的类,但最好不这样做 { } public static void main(String[] args) { Parcel5 p = new Parcel5(); Destination d = p.destination("Tasmania"); } } ///:~
//: innerclasses/Parcel6.java // Nesting a class within a scope. package object; public class Parcel6 {private void internalTracking(boolean b) {if(b) {class TrackingSlip { //在if域之外类TrackingSlip不可用,可以通过internalTracking方法调用,TrackingSlip类的方法private String id;TrackingSlip(String s) {id = s;}String getSlip() { return id; }}TrackingSlip ts = new TrackingSlip("slip");String s = ts.getSlip();}// Can't use it here! Out of scope://! TrackingSlip ts = new TrackingSlip("x"); } public void track() { internalTracking(true); }public static void main(String[] args) {Parcel6 p = new Parcel6();p.track();} } ///:~
转载于:https://www.cnblogs.com/jiangfeilong/p/10223232.html
Java 在方法和作用域内的内部类相关推荐
- 9.Java面向对象-方法参数类型及返回值类型、权限修饰符、内部类、匿名内部类
9.Java面向对象-方法参数类型及返回值类型.权限修饰符.内部类.匿名内部类 一.类名作为形式参数 A:案例演示: 类名作为形式参数当你以后看到一个方法的形参要一个 类 类型,你就传递一个该类的对象 ...
- Java基础复习-4-抽象类、内部类、接口
目录 抽象类 一.概述 二.代码实例 **实例解析** 内部类 内部类分为:成员内部类,局部内部类以及匿名内部类 不同种类类的修饰符 局部内部类的final 匿名内部类(重要) 匿名对象是什么呢?请看 ...
- javascript调用java的方法
这篇文章主要讲述如何在JavaScript脚本语言中调用Java类和接口,对大家的学习和工作有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧. 前言 本文中所有的代码使用 JavaScript 编 ...
- 零基础全方位学习java的方法
java技术岗是一个就业率非常高的岗位,因此有很多人都想要学习java技术,其中不乏一些零基础同学,零基础小白都不清楚自己该如何学习java,那么下面小编就为大家详细的介绍一下零基础全方位学习java ...
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...
- java中变量的作用域
java中变量的作用域 变量一定会被定义在某一对大括号中,该大括号所包含的代码区便是这个变量的作用域.变量分为四个级块:类级 ,对象实例级 ,方法级 ,块级 类级:所谓的全局变量,需要使用static ...
- 入Java_初入Java的方法
Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序 输出Hello,world!中用到一个方法System.out.printfln():这里的printfln()就是一个方法,S ...
- Java微服务学习 第九天 接口 内部类
2.接口 当抽象类中所有方法都是抽象方法的时候,那么这个类是一个特殊的抽象类,叫接口 接口是java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成. 格式: i ...
- Java 学习笔记(8)——匿名对象与内部类
一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和 ...
- Java中方法的学习
目录 概述 第一章:Java中的方法是什么意思 (1)Java中方法的定义 ①方法的修饰符 ②方法的返回值类型 ③方法名 ④方法的参数列表 ⑤方法体 第二章:方法的重载和重写 (1)方法的重载 (2) ...
最新文章
- 打开线程 | 进程 | 协程的大门
- iOS WKWebView JS原生交互之JS调用OC(附demo)
- Matlab求矩阵大小
- python抢票代码_GitHub标星超12K,抢票神器大更新,支持候补
- cron 每月最后一个自然日_日乙前瞻:鹿岛樱花谁能冲击亚冠,浦和红钻能否守住最后一个主场...
- 【服务器】挖矿病毒 kdevtmpfsi(一针见效)
- tomcat8+idea远程调试
- 【java基础知识】通过java实时查询数据库
- CEF js调用C#封装类含注释
- JAVA通过调用数据库函数调用存储过程
- [译] 用 Redis 和 Python 构建一个共享单车的 app
- rtcp webrtc 接收_WebRTC RTP/RTCP 源码分析(四):RTCP 的接收和解析
- [HAOI2006]聪明的猴子
- 多张图片合成一张jpg工具_比较好的拼图软件,多张图片合并工具
- 2022-02-09大数据学习日志——Hadoop离线阶段——Hive窗口函数、性能调优
- BabeLua--Lua调试器
- 【笔记】openwrt - Dnsmasq替换SmartDns+ADguardHome、koolproxy
- 虚拟化识别共享USB加密狗|银行U盾等解决方案
- 清除windows 远程桌面访问记录 批处理
- 智慧课堂辅助App的设计与实现
热门文章
- Struts2之Action的基本配置
- [渝粤教育] 郑州财税金融职业学院 玩转e时代 参考 资料
- 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
- 【渝粤教育】国家开放大学2018年秋季 1141t工程经济与管理 参考试题
- 数据挖掘:概念与技术 笔记
- PyTorch并行与分布式(二)分布式通信包torch.distributed
- Debugview调试视图
- python之路 -- 并发编程之进程
- 分层架构(第一张章)
- 【转】雅虎邮箱免费开通POP方法 YAHOO!MAIL YMAIL免费开通POP.SMTP和转发功能