我在做thinking in java(第四版)的第十章的练习6.
练习6: 在第一个包中创建一个至少有一个方法的接口.然后在第二个包内创建一个类,在其中增加一个protected的内部类以实现那个接口.在第三个包中,继承这个类,并在一个方法中返回该protected内部类的对象,在返回的时候向上转型为第一个包中的接口的类型.
第一个包中,接口
package chapter1;
/**
* thinking in java, chapter 10, exercise 6
* @author mark.wang 20120408
*
*/
public interface Drive {
public void drive();
}
第二个包中,含protected的内部类
package chapter10;
import chapter1.Drive;
/**
* thinking in java, chapter 10, exercise 6
* @author mark.wang 20120408
*
*/
public class Automobile {
protected class Car implements Drive {
public void drive() {
System.out.println("Car Drive...");
}
}
}
第三个包中,创建第二个类的内部类对象,报错.
package chapter2;
import chapter1.Drive;
import chapter10.Automobile;
/**
* thinking in java, chapter 10, exercise 6
* @author mark.wang 20120408
*
*/
public class Chery extends Automobile {
public Drive getCar() {
return new Car();
}
public static void main(String[] args) {
Chery chery = new Chery();
chery.getCar().drive();
}
}
第14行报了The constructor Automobile.Car() is not visible的错误.
我在Automobile中为内部类Car新增一个public的构造器,就不报错了,我不明白这倒地是什么回事,求大神们赐教.
问题补充:小哀好困 写道
因为当你没有提供构造函数而使用默认构造函数时
该构造函数的可见度是和类相同的
也就是说,你Car类的构造函数也是protected的
所以是不可见的
但是我的Chery是继承自Automobile的,protected,应该对它可见的吧.
问题补充:小哀好困 写道
Car内部类,对于Chery是可见的没错
所以它是报,构造函数不可见错误哦
对,问题就是处在内部类的可见性上面.
小哀好困 写道
Car内部类,对于Chery是可见的没错
所以它是报,构造函数不可见错误哦
还是不明白呀,怎么会是私有呢?
它是protected的呀
相关推荐
LabVIEW支持多态性,通过函数选板(Function Palette)中的“Object”类别,可以创建各种类型的对象引用,使得调用相同方法时,根据对象的实际类型执行不同的代码路径。 5. LabVIEW中的面向对象框架:LabVIEW提供了...
“大神”项目为个人开发项目,包含了登陆注册,文件资源上传,地图导航等功能,仅供参考,请勿用于商业用途 之前版本犹豫后端服务器未缴费停止了服务... 随时跟进代码github:https://github.com/devilyouwei/dashen
从给定文件的内容中,我们可以提取出以下知识点: 1. 数学运算中的代入排除法:这是一种常见的数学问题解决策略,通过尝试不同的数值来满足特定条件,最终找到正确答案。例如,例1中提到的三位数问题,通过将个位和...
郭大神在其博客中详细介绍了如何在Android中使用属性动画,尤其是一些高级用法。下面,我们将深入探讨这些知识点。 首先,属性动画与传统的补间动画(Tween Animation)和帧动画(Frame Animation)不同,它不依赖...
C++ Socket类是一种在计算机网络编程中用于通信的工具,由这位英国的大神编写,能够兼容Microsoft Foundation Classes (MFC)框架以及Linux操作系统。Socket编程是实现客户端与服务器之间数据交换的基础,它允许应用...
JavaScript中的实时代码编辑器以及源代码 项目:JavaScript中的实时代码编辑器及源代码 实时代码编辑器是一个使用HTML、CSS和JavaScript开发的简单项目。当你打开项目时,你可以在浏览器上看到编辑器页面,你可以...
3. 创建新类模块:在VBA编辑器的左侧“项目资源管理器”窗口中,右键单击“模块”文件夹,选择“插入”然后点击“类模块”。此时,一个新的空白模块窗口将会出现,你可以在顶部输入新类模块的名称,例如“我的新类”...
在IT领域,串口通信是一种基础且重要的通信方式,尤其在嵌入式系统、物联网设备以及工业自动化中广泛应用。本文将深入探讨标题所提及的"Github上大神写的串口通信类",主要关注C++实现的SerialPort类以及RS422通信...
《易语言记事本大神之路 源代码》是一个以易语言为基础的编程学习资源,旨在帮助初学者和有经验的程序员提升在记事本程序开发中的技能。易语言是一种面向对象、可视化、组件化的编程语言,它以其简单易学、中文编程...
求大神帮做个音频水印的界面代码已有-音频水印.rar 呃...写了一个音频水印的代码,但是不会做软件的界面,自己用GUI做了一个,但是连wav文件的波形都读不出来,请各位高手帮帮忙看看这界面要怎么做。代码我做到...
项目:JavaScript 中的简单文本编辑器 文本编辑器应用程序是一个简单的 JavaScript 文本编辑项目。谈到这个项目,它有很多功能。用户可以根据需要创建笔记和文件。该项目是官方 VS Code 应用程序的桌面应用程序。这...
java教程_523集java从小白到大神经典教程(P3 Java常见对象)",表明该资源是在B站(哔哩哔哩)上发布的,且是该系列教程的第三部分,专注于Java中的常见对象。"P3"可能代表"Part 3",意味着这部分教程可能重点讲解...
它可能还包含对luac编译器的集成,使得用户可以直接在编辑器中编译和运行代码。 “中文”标签意味着luaEditor对中文用户友好,界面和帮助文档可能是中文的,这对于中国开发者来说是一个很大的便利,减少了语言障碍...
【酷派大神F2全网通版8675-A第三方中文recovery.rar】这个压缩包文件主要涉及的是安卓智能手机的系统恢复工具,特别针对酷派大神F2全网通版8675-A这款手机。在Android操作系统中,Recovery模式是一个特殊的系统状态...
5. **遵守游戏规定**:在使用WIL编辑器自定义游戏内容时,应遵循游戏的用户协议,尊重知识产权,避免非法修改和分享。 ### 四、相关工具与扩展应用 除了WIL编辑器,还有其他辅助工具,如图层编辑软件、纹理打包...
QT大神刘某源代码资源是一份宝贵的编程学习资料,它主要涵盖了QT库的多个开源项目。QT是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面(GUI)和其他类型的软件。刘某,作为QT领域的专家,他的源代码示例...
java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip...
JavaScript中的Markdown编辑器带源代码 Markdown编辑器是一个使用HTML、CSS和JavaScript开发的简单项目。当你打开项目时,你可以在浏览器上看到编辑页面,在页面的一侧你可以输入文字。同时,在另一侧查看其结果。 ...
该系统允许您在编辑文本文件或文档时具有更大的灵活性。谈到这个系统,它具有各种功能。它将为您提供编辑文本和样式的控制。 关于系统 C#简单文本编辑器是一个小型项目,是之前应用程序的更新版本。正如名字所示,...
在IT领域中,面向对象编程(OOP)是构建软件应用的基本方法之一。OOP 的核心概念之一是继承,它允许开发者基于一个现有类(称为基类或父类)创建新类(称为派生类或子类)。继承通过复用基类代码来实现更加模块化的...