进口和扩展

时间:2010-08-18 01:27:28

标签: java oop inheritance import

任何人都可以解释 “在我们导入包时,我们可以使用它的所有公共功能,   那么扩展一个类有什么用呢?“ “我正在学习OOP Langusges 3年,我没有回答这个问题”

5 个答案:

答案 0 :(得分:3)

扩展一个类if for inheritance,一个OOP机制,它与导入无关,当你进行导入时,你实际上导入了关于导入包的所有类,除非你导入了包的特定类。

您可以访问此类及其公共成员或函数,如果您引用它们的类位于同一个包中,则可以进行保护。包和导入让你组织你的软件项目,如果我可以在这里使用这个概念......在课堂上有一定的模块性

与此同时,继承作为一个OOP机制让你组织你的类,但这次是在他们的关系中,出于很多目的,比如重用成员和函数,代码可读性以及为什么不用语法糖

继承和其他OOP机制,允许您以对象和代码语义的方式编写代码,就像现实生活一样,并以更人性化的方式生成代码

希望这会有所帮助

答案 1 :(得分:3)

两件事。

导入包时,如importa java.util.*中所示,您将导入其中的所有类。这意味着你实例化(如果可能)那里的所有clases,并访问他们的接口(他们的公共方法)。换句话说,您可以使用它的类。

当你扩展(inheritance是关键词)一个类时,你可以重新定义它的行为。通过其方法实现的类行为。通过扩展它们,您可以保留方法签名,即其访问者(公共,受保护等),返回类型(void,int,someObject等)及其参数,但使其行为完全不同。此外,您可以通过继承向类添加新方法。也就是说,你编写自己的类,并继承上层的所有(公共/受保护)方法。

继承关系应该满足is a关系。 Here's继承的例子。

答案 2 :(得分:1)

导入和扩展提供不同的功能。通过导入包,您可以使用该包中的任何公共类和公共方法。扩展一个类提供了与所讨论的类更紧密的关系。您将能够访问受保护的成员,以及覆盖成员以修改或改进其功能。扩展类也被认为是原始类的一种类型。

例如,假设我有一个包含EuropeanBanker类的Finance包。此类具有公共方法,可以添加,减去和报告欧元和英镑的余额。让我们假设这些操作实施起来非常复杂(汇率,交易费用等等)。通过导入财务包,我可以利用Banker类来跟踪我拥有的任何欧元。但是,我将无法修改Banker类。例如,我不能使用Banker类跟踪美元,比索或日元。

但是,如果我扩展EuropeanBanker类来创建一个UniversalBanker,那么我可以更深入地访问该类。我可以添加方法来允许以美元,日元,比索或任何其他货币进行交易。这可以利用EuropeanBanker中已有的功能来完成。我可以利用受保护的方法来获取货币汇率,交易费等。

因此,导入包我可以利用现有功能。但是通过扩展一个类,我可以添加新功能或覆盖现有功能。

答案 3 :(得分:1)

从包中导入类时,您可以通过它的实例使用它,但如果您确实扩展了类,则可以通过“this”和“super”关键字访问类的成员。

答案 4 :(得分:0)

在Java中,扩展一个类可以让你substitute,并使用它的受保护成员。受保护的方法不能被其他包中的任意类调用。