Thinking In Java 第四版 上有个地方看不懂,不知道是不是陈吴鹏翻译问题~~

llm0528 2008-07-27 10:23:48
主要是关于下面这段代码的解释,其中一个地方完全无法理解
class Parcel4 {
private class PContents implements Contents {
private int i = 11;
public int value() { return i; }
}
protected class PDestination implements Destination {
private String label;
private PDestination(String whereTo) {
label = whereTo;
}
public String readLabel() { return label; }
}
public Destination destination(String s) {
return new PDestination(s);
}
public Contents contents() {
return new PContents();
}
}

public class TestParcel {
public static void main(String[] args) {
Parcel4 p = new Parcel4();
Contents c = p.contents();
Destination d = p.destination("Tasmania");
// Illegal -- can't access private class:
Parcel4.PDestination pc = p.new PDestination();
}
}


下面是截取书中原话"PDestination是protected , 所以只有Parcel4及其子类、还有与Parcel4同一个包中的类能访问PDestination,其他类都不能访问PDestination。这意味着,如果客户端程序员想了解或访问这些成员,那是要受到限制的。实际上,甚至不能向下转型成private内部类(或protected内部类,除非是继承自它的子类),因为不能访问其名字,就像在TestParcel类中看到的那样。"
上面红色字体部分就是我无法理解的部分,还请各位高手解答~~
...全文
194 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hlwdim 的回复:]
这本书的翻译的确有问题.
[/Quote]
可以看影印版的
llm0528 2008-07-28
  • 打赏
  • 举报
回复
谢谢各位了~~~
hlwdim 2008-07-28
  • 打赏
  • 举报
回复
这本书的翻译的确有问题.
zishizhilong 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ZangXT 的回复:]
就是只能通过父类或者接口的引用来访问它,而不能执行向下的类型转换,因为在外部你根本不知道这个内部类的名字。
比如
Object obj=new String("abc");
因为我们知道这个obj实际指向的是String对象。所以我们可以这样向下转型:
String str=(String)obj;

而这个例子中,
Contents c = p.contents();
我们指知道Contents是个接口类型,c指向了一个实现了这个接口的类的对象。但至于这个类是什么我们就不知道了。所…
[/Quote]


正解
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
Contents c = p.contents();
也就是说下面这句是不可以的:
Parcel4.PContents d=(Parcel4.Pcontents)c;
因为你不知道Parcel4.PContents这个了类型的存在,更不用说类型转换了

对于Protected:
Destination d = p.destination("Tasmania");
// Illegal -- can't access private class:
Parcel4.PDestination pc = (Parcel4.PDestination)d;
也是不可以的。如果你让例子中的TestParcel类继承Parcel4,就可以执行上面这句话,因为Parcel4.PDestination是protected的,在子类中可以看到这个内部类定义。
自己改代码看看。
llm0528 2008-07-28
  • 打赏
  • 举报
回复
恩,这里就标识放着,以后再来慢慢体会这句话吧
llm0528 2008-07-28
  • 打赏
  • 举报
回复
1、甚至不能向下转型成private内部类 这句话要是只写“不能向下转型”倒是很容易理解,但是不能转成private内部类就搞不懂了,脑子里没这概念。
2、(或protected内部类,除非是继承自它的子类) 这句更加摸不着头脑了...
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
不明白的暂时放下往后看。看多了就自然明白了。
llm0528 2008-07-28
  • 打赏
  • 举报
回复
虽然4楼解释的很明白,可是再看那句话还是摸不着头脑~~
HW_zxc_005 2008-07-28
  • 打赏
  • 举报
回复
up
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
翻译还算过得去。
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
就是只能通过父类或者接口的引用来访问它,而不能执行向下的类型转换,因为在外部你根本不知道这个内部类的名字。
比如
Object obj=new String("abc");
因为我们知道这个obj实际指向的是String对象。所以我们可以这样向下转型:
String str=(String)obj;

而这个例子中,
Contents c = p.contents();
我们指知道Contents是个接口类型,c指向了一个实现了这个接口的类的对象。但至于这个类是什么我们就不知道了。所以不能指向向下转换。
jingulang 2008-07-28
  • 打赏
  • 举报
回复
说的很明白啊...

那个内部类是protected
qepdcwq 2008-07-28
  • 打赏
  • 举报
回复
可能指的是包外的类不能直接用PDestination pd = new PDestination("sdf");这样的方式来创建PDestination对象吧。我也是菜鸟,个人想法,仅供参考
已经博主授权,源码转载自 https://pan.quark.cn/s/065b9eef5714 ### STM32H7x3微控制器参考手册核心内容概述 #### 1. 开篇介绍 - **主要目标**:该手册致力于向开发者提供详尽的STM32H7x3微控制器内存及外设信息,从而有效辅助应用开发工作。 - **应用领域**:STM32H7x3系列微控制器涵盖了多样化的内存容量、封装类型以及外设配置。 #### 2. 存储器与总线体系结构 - **系统构造** - **总线矩阵**:负责协调不同总线间的数据传输。 - **总线-总线桥接器**:实现高速总线与低速总线之间的数据交互。 - **域间总线**:构建不同功能域之间的连接,确保高效的数据传输。 - **CPU总线**:建立处理器核心与内存/外设之间的数据通路。 - **总线主设备外设**:明确了哪些组件能够担任总线的主控或从属角色。 - **功能模块的时钟配置**:每个模块均具备独立的时钟设置,旨在优化性能表现与能耗控制。 - **存储器布局设计** - **导言**:阐述了存储器组织的基本概念。 - **存储器映射和寄存器边界地址**:深入解析了内存区域的划分及其与寄存器的关联性。 - **内部静态随机存取存储器 (SRAM)** - 说明了内部SRAM的特性及其配置方法。 - **Flash存储器简介** - 简要概述了STM32H7x3的Flash存储器特性。 - **启动模式配置** - 说明了如何设置微控制器以适应多种启动模式。 #### 3. 嵌入式Flash (FLASH) - **Flash主要性能指标** - 容量巨大。 - 读取速度快。 - 耐用且可靠。 - **Flash功能详解** - **框图...
标题SpringBoot智能租房APP安全开发与实现研究AI更换标题第1章引言阐述智能租房APP的发展背景、安全开发的重要性及论文研究方法与创新点。1.1研究背景与意义分析智能租房市场的现状及安全开发对用户隐私保护的重要性。1.2国内外研究现状概述国内外在智能租房APP安全开发方面的研究进展。1.3研究方法以及创新点介绍本文采用的研究方法及在安全开发方面的创新点。第2章相关理论总结智能租房APP安全开发涉及的相关理论和技术。2.1网络安全基础理论介绍网络安全的基本概念、威胁模型及防御策略。2.2SpringBoot框架安全机制阐述SpringBoot框架在安全开发中的应用及优势。2.3数据加密与解密技术介绍数据加密与解密的基本原理及在租房APP中的应用。2.4用户认证与授权技术讨论用户认证与授权的重要性及实现方法。第3章智能租房APP安全开发方案设计详细描述智能租房APP的安全开发方案,包括架构设计、功能模块划分等。3.1系统架构设计给出系统的整体架构,包括前端、后端及数据库的设计。3.2安全功能模块设计介绍安全功能模块的设计,如用户认证、数据加密、访问控制等。3.3数据库安全设计阐述数据库的安全设计,包括数据备份、恢复及访问控制策略。第4章数据收集与安全分析方法说明数据收集的方式、安全分析的方法及工具。4.1数据收集方式介绍通过日志收集、用户反馈等方式获取安全相关数据。4.2安全分析方法阐述采用的安全分析方法,如漏洞扫描、渗透测试等。4.3安全分析工具介绍使用的安全分析工具及其功能特点。第5章安全开发与实现详细描述智能租房APP的安全开发过程及实现细节。5.1开发环境搭建介绍开发环境的搭建过程,包括开发工具、服务器配置等。5.2安全编码实践阐述在开发过程中遵循的安全编码规范及实践。5.3安全测试与验证介绍安全测试的方法、测试用例设计及测试结果验证。第6章研究结果展示智能租

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧