Java编程思想:嵌套类
public class Test {
public static void main(String[] args) {
// Parcell11.test();
// ClassInterface.Test.test();
TestBed.Tester.test();
}
}
/*
嵌套类和普通的内部类还有一个区别。普通的内部类的字段和方法,只能放在类的外部
层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但
是嵌套类可以包含这些东西
*/
interface Content {
int value();
}
interface Destination {
String readLabel();
}
class Parcell11 {
private static class ParcelContents implements Content {
;
@Override
public int value() {
return i;
}
}
protected static class ParcelDestination implements Destination{
String lable;
public ParcelDestination(String lable) {
this.lable = lable;
}
@Override
public String readLabel() {
return null;
}
//嵌套类中,允许有静态区域
public static void f() {
}
;
static class AnotherLevle {
public static void f() {
}
;
}
}
public static Destination destination(String s) {
return new ParcelDestination(s);
}
public static Content content() {
return new ParcelContents();
}
public static void test() {
Content c =content();
Destination d = destination("HHH");
}
}
/*
需求:
如果你想创建某些公共代码,使得它们可以被某个接口的所有不同实现所公用,那么使
用接口内部的嵌套类会显得很方便。放在接口中的任何类都自动地是public和static
的。因为类是static的,只是将嵌套类置于接口的命名空间内,这并不违反接口的规则
。你甚至可以在内部类中实现其外围接口。
*/
interface ClassInterface {
void howdy();
class Test implements ClassInterface {
@Override
public void howdy() {
System.out.println("Howdy!");
}
public static void test() {
new Test().howdy();
}
}
}
/*
需求:
我曾在这本书建议过,在每个类中都写一个main()方法,用来测试这个类。这样做有一个
缺点,那就是必须带有已编译过的额外代码。但是可以使用嵌套来放置测试代码,嵌套类会
生成一个字节码文件,发布时将字节码文件删除就好了
*/
class TestBed {
public void f() {
System.out.println("f()");
}
public static class Tester {
public static void test() {
TestBed t = new TestBed();
t.f();
}
}
}
/*
笔记:
一个内部类被嵌套多少层并不重要——它能透明的访问所有它所嵌入的外部类的所有成员方法。
同时,在不同的类里创建多层嵌套的内部类对象时,.new语法能产生正确的作用域,所以不必
在调用构造器时限定类名。
——这跟嵌套类没有半毛钱的关系
*/
class A1 {
private void f() {
}
class A2 {
private void g() {
f();
}
private class A3 {
private void h() {
f();
g();
}
}
}
}
//测试一下如果外围类有同名方法会怎样
class B1 {
private void f() {
System.out.println("B1");
}
class B2 {
private void f() {
f();
System.out.println("B2");
}
private class B3 {
private void f() {
f();
f();
System.out.println("B3");
}
}
}
}
class MultiNestingAccess {
public static void test() {
}
}
Java编程思想:嵌套类的更多相关文章
- java编程思想-复用类总结
今天继续读<java 编程思想>,读到了复用类一章,看到总结写的很好,现贴上来,给大家分享. 继承和组合都能从现有类型生成新类型.组合一般是将现有类型作为新类型底层实现的一部分来加以复用, ...
- java编程思想-复用类(2)
如果java的基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本(这一点与C++不同) class Homer { char doh(char c) { ...
- java编程思想-复用类
/* 一个文件中只能有一个public类 并且此public类必须与文件名相同 */ class WaterSource { private String s; WaterSource() { Sys ...
- 33.JAVA编程思想——JAVA IO File类
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...
- Java编程思想(四) —— 复用类
看了老罗罗升阳的专訪,不由自主地佩服,非常年轻,我之前以为和罗永浩一个级别的年龄.也是见过的不是初高中编程的一位大牛之中的一个,专訪之后.发现老罗也是一步一个脚印的人. 别说什么难做,做不了.你根本就 ...
- Java编程思想读书笔记之内部类
现在是够懒得了,放假的时候就想把这篇笔记写出来,一直拖到现在,最近在读<Java编程思想>,我想会做不止这一篇笔记,因为之前面试的时候总会问道一些内部类的问题,那这本书的笔记就从内部类开始 ...
- Java编程思想学习(八) 内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...
- Java编程思想 (1~10)
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第一章 对象导论 1.万物皆对象2.程序就是对象的集合3.每个对象都是由其它对象所构成 ...
- Java中的嵌套类和内部类
以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很 ...
- Java编程思想(前十章)
Java编程思想 有C++编程基础的条件下, 前10章可以快速过一下,都是基本语法,不需要花太多时间. 着重中后段的一些章节,类型信息.泛型.容器.IO.并发等. 中文翻译版 阅读地址 对于一个架构师 ...
随机推荐
- Android零基础入门第53节:拖动条SeekBar和星级评分条RatingBar
原文:Android零基础入门第53节:拖动条SeekBar和星级评分条RatingBar 前面两期都在学习ProgressBar的使用,关于自定义ProgressBar的内容后期会继续学习的,本期先 ...
- 通过异步程序调用(APC)实现的定时功能
定时器是一个在特定时间或者规则间隔被激发的内核对象.结合定时器的异步程序调用可以允许回调函数在任何定时器被激发的时候执行.本文的例子代码显示了如何实现. 使用本定时器时,你需要把常量_WIN32_WI ...
- c# 叫号小程序
写个叫号的小demo 长相如下 代码如下 using System; using System.Collections.Generic; using System.ComponentModel; us ...
- 这里有123个黑客必备的Python工具!
123个Python渗透测试工具,当然不仅于渗透~ 如果你想参与漏洞研究.逆向工程和渗透,我建议你时候用Python语言.Python已经有很多完善可用的库,我将在这里把他们列出来. 这个清单里的工具 ...
- PHP/JS中获取当前页面的完整URL
javascript实现: top.location.href 顶级窗口的地址this.location.href 当前窗口的地址 php实现 PHP实现 #测试网址: http://localhos ...
- pycharm窗口选项卡管理
1.主题 我们已经注意到Pycharm的主编辑框是基于窗口选项卡机制显示的,Pycharm选项卡多种多样,这里我们将详细介绍这种选项卡机制. 2.激活的选项卡 每当我们打开一个Python文件时op ...
- 【JavaScript】彻底明白this在函数中的指向
一.this,其实可以类比成人 说到this的话,我们在js中主要研究的都是函数中的this,在javascript中,this代表当前行为的执行主体,而context代表的是当前行为执行的的环境(区 ...
- JVM 参数类型
标准参数 -help -server -client -version -showversion -cp -classpath X参数 非标准化参数(在各个JDK版本中可能会变,但是变动比较小) -X ...
- 【设计模式】【最后一个】结构型07适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 推荐一个很全面的博客:https://blog.csdn.net/zxt0601/article/details/52848004 定义:将一个类的接口转 ...
- 【设计模式】结构型03外观模式(Facade Pattern)
[设计模式]结构型02装饰模式(Decorator Pattern) 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决:降低访问 ...