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) ...
最新文章
- UILabel显示带颜色边的文字
- 比尔盖茨2016好书推荐
- docker部署Redmine项目管理平台
- linux cpp vscode远程调试 的配置
- 接口对前后端和测试的意义
- 利用MFC向导生成单文档应用程序框架
- Problems with Ribbon/Feign/Zuul retry
- 《工业设计史》第九章:职业工业设计师的出现
- 优科豪马冬季SUV轮胎G072的性能特点全解
- 如何给Layout文件夹分类
- 对数数学知识回忆(log)
- 开源OceanBase如何与Prometheus与Grafana监控结合
- 巴菲特财富人生精华版
- Eth 02 - MII接口概述及代码解析
- C++ bitset的使用
- Fairplay之 generating FairPlay content key request on iOS after 14.6
- Java每日一讲线程池的总结
- ArcGIS Runtime Esri新的离线地图数据格式——移动地图包(转载自Esri中国)
- QMS-云质-质量管理软件-西门子MES里面有质量模块,为什么还要收购质量软件-IBS?
- java实现给微信群中定时推送消息
热门文章
- 浮点数例外 (核心已转储)_年仅21岁出场过百重新定义边后卫,克洛普把阿诺德打造成进攻核心...
- Json文件转Map(二)之解析节点
- 通俗认识理解OpenAI Five
- 2018-2019-1 20189204《Linux内核原理与分析》第一周作业
- Hive、Spark优化案例
- 牛客 小a与星际探索 bfs
- 【sping揭秘】18、使用spring访问数据
- BZOJ3571 [Hnoi2014]画框 【分治 + KM算法】
- eclipse javaWeb项目如何引入jar包
- C/C++(变量作用域)