6.2 类继承概括地讲,从一个基类派生出一个新类的过程是补充类定义的过程。说明的附加使得派生类有别于基类。在新类中声明的所有是除已经在基类中 定义的以外的那些。在由Dvg派生的Spaniel类中,保存名字和品种的数据定义在Dag类中,它们也将自动地成为Spaniel类的成 员。一个Spaniel对象内部将总拥有一个完整的Dog对象,包括所有的数据和方法。这并不意味着在Dog类中定义的所有对于Spaniel类 中的特有方法都可用,有一些可以用,而有一些则不可用。在派生类中包含可以在派生类中访问的基类,我们把它称之为类的继承(class inheritance).基类的被继承(inherited member)在派生类内是可被访问的那一部分,如果基类中的在派生类中不可访问,则它就不是派生类的被继承,但是不是被继承的基类仍然 作为派生类对象的一部分。
派生类的被继承是那个类的一个完整,并且它可以被类中的任何方法地访问。派生类对象将包含基类的所有被继承(包括字段和方 法〕,以及派生类所特有的。注意,一个派生类对象总是在其内部包含一个完整的基类对象,所有没有被继承的字段和方法也包括在内。我们需要进一步分析继 承是如何操作的,以及一个基类的访问属性是如何影响它在派生类中的可见性的。
我们需要考虑几个定义和使用派生类方面的问题。第一,我们需要知道基类的哪些被继承到派生类中。我们将看到对于数据和方法分别意味着什 么,在这里我们应该清楚它们之间的细微差别。我们还会看到在你建立一个派生类对象时会发生的事情。关于这一点,还有一些问题需要再周密考虑一下。让我们从 由基类继承的数据开始介绍。
继承数据
在下面这个示意图中显示了在子类中被继承的类允许有哪些访问属性。它说明了在同一个包中定义子类或者在包含基类的不同包中定义子类所发生的情况口请记住,继承暗示着在派生类中可访问,而不仅仅限于眼前定义的类。
注意,要在包含基类的包的外部派生一个类,这个基类就必须声明为public,如果没有声明为public,这个类就不能直接地扩展到包的外部。
文章来源于http://www.daosimt4.com/MT4平台出租
网友评论 ()条 查看