`
zengjuly
  • 浏览: 15039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

组合与继承

 
阅读更多

composition组合
语法:
class A
{
B bref;
...
}
A有一个B

inheritance继承
语法:
class A extends B{
......
}

A是一种B
Java中所有的类都继承自基础类Object,即使你在代码中什么都没写。这就是"Everythis is an object"。

继承是接口的重复运用。虽然实现细节也被继承了,但并非主要目的。
在派生类(derived class)中要调用父类(superclass)的接口,需要使用关键字super。
Java会自动在派生类的构建函数中插入对父类的构建函数的调用。
如果你的class不具备default构建函数,或者你想嗲用带有参数的父类构建函数,需要使用关键字super,并传入对应的参数,且调用父类的构建函数必须是派生类的构建函数的第一件事。例:
B(int i){
super(i);//如果父类没有默认构建函数,则父类的构建函数必须显示调用,编译器不会自动添加
...
}

Name hiding名称遮蔽
如果Java的父类拥有某个被重载多次的函数名称,在派生类中重新定义此函数,不会遮蔽其在父类中的任何版本。这与C++应该是没有差别的,为什么书上说有差别??????????

protected天生具有friendly权限。
建议准则:成员变量设置为private,使用protected函数来控制继承者对你所撰写的class的存取权限。

继承的优点之一就是支持渐进式开发。

在进入稳定状态之后,你得重新检视你的class体系结构,思考如何将其缩减为更实用的结构。
透过不同类型的对象的生成和操作,以来自问题空间的术语来表现一个模型。

继承是介于派生类和父类之间的一种关系,派生类是父类的一种形式。
将派生类的引用转为父类的引用的动作称为向上转型。向上转型一定安全,它是从专用型别转移至通用型别。

应该只用在明显能够产生实用价值时,才使用继承。例如:是否必须向上转型?

final关键字

初始化和class的载入

分享到:
评论

相关推荐

    ch12 组合与继承.ppt

    【组合与继承】 在面向对象编程中,组合和继承是两种重要的机制,它们允许程序员创建复杂的类结构,实现代码的重用和扩展。 **组合**指的是一个类包含另一个类的对象作为其成员变量,这种关系通常被称为“has-a”...

    Java组合与继承之间的选择

    在本文中,我们将深入探讨Java中的组合与继承,并分析何时选择哪种方式。 **继承** 是面向对象编程的基本概念之一,它允许一个类(子类)从另一个类(父类)继承属性和方法。通过继承,子类可以重用父类的功能,...

    UML学习之依赖_关联_聚合_组合_继承

    ### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...

    10丨理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?1

    其中,“组合优于继承”是一条广为流传的原则,意味着在设计软件时,我们应该优先考虑使用组合(Composition)而不是继承(Inheritance)。这条原则的提出主要是为了解决继承带来的潜在问题,如代码的可维护性、可...

    再论组合和继承

    继承与组合各有优缺点。继承提供了强大的代码复用能力,但可能导致类层次过于复杂,甚至出现菱形继承问题,即多个基类有共同的祖先,子类继承自这些基类时可能会产生歧义。为解决这类问题,C++引入了虚继承(virtual...

    组合和继承的联合

    在编程世界中,组合和继承是面向对象编程的两种核心机制,它们允许我们构建复用性和可扩展性极强的代码。本章我们将深入探讨这两种概念的联合使用,以及它们在C++中的实现。 组合(Composition)是创建复杂对象的一...

    C++学习笔记——继承和组合

    根据给定的文件标题、描述、标签以及部分内容,本文将深入探讨C++中的两个核心概念:继承与组合。这两种机制都是面向对象编程中用于实现代码重用的重要手段,但它们在设计模式、实现细节以及适用场景上存在显著差异...

    C 程序设计课件:4 继承与多态.ppt

    ### C程序设计课件知识点详解:继承与多态 #### 一、继承的基本概念 **继承**是一种重要的面向对象编程特性,它允许我们创建一个新的类(派生类),该类继承了现有类(基类)的属性和行为。通过继承,我们可以重用...

    Python面向对象类继承和组合实例分析

    组合与继承相比,它更多地被用来描述一种“拥有”关系,而不是“是”关系。类可以通过组合来拥有其他类的实例,这样可以提高代码的复用性,同时降低系统的耦合度,使类之间的依赖关系更加灵活和松散。在Python中实现...

    Java中类的组合概念

    类的组合与继承不同,它是通过在类定义中嵌入其他类的实例来实现的,这种方式有助于提高代码的可重用性和模块化。 首先,我们来理解Java中类的概念。类是面向对象编程的基本单位,它定义了一组属性(成员变量)和...

    圣诞树python-32-继承总结.ev4.rar

    10. **组合与继承的选择**:在某些情况下,组合(将一个类的对象作为另一个类的成员)可能优于继承。 标签“python 范文/模板/素材”表明这个教程可能包含示例代码、模板或者可以用于学习和项目开发的实际素材。`...

    C++中继承与组合的区别详细解析

    C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”。我们要给“继承”立一些使用规则: 一、如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B 继承A 的功能...

    编程思想14章继承和组合的介绍

    在编程世界中,继承与组合是面向对象编程的两个核心概念,它们允许我们构建复杂、可复用且灵活的软件系统。本章“编程思想14章:继承和组合的介绍”深入探讨了这两个概念,旨在帮助开发者更好地理解和运用它们。 ...

    面向对象设计原则.pdf

    本文将深入探讨“面向对象设计原则.pdf”文档中提及的关键知识点,包括面向对象设计的基本法则,以及组合与继承这两种重要的设计模式。 ### 组合优先于继承 文档中的第一条法则强调了“优先使用组合,而非继承”。...

    C++编程思想习题

    13.5组合与继承的选择 13.5.1子类型设置 13.5.2专门化 13.5.3私有继承 13.6保护 13.7多重继承 13.8渐增式开发 13.9向上映射 13.9.1为什么“向上映射” 13.9.2组合与继承 13.9.3指针和引用的向上映射 13.9.4危机 ...

    付哲C课程继承与功能组合.pdf

    描述中提到的“付哲-C课程继承与功能组合.pdf”,预示了本文档可能是一份关于C++继承以及如何运用功能组合的教程或课程资料,涉及的知识点广泛,可能包括C++继承的三种方式(public、protected、private继承),以及...

    Java面向对象面试题.docx

    组合与继承都是代码复用的手段,但有所不同。**组合**是“has-a”关系,一个类包含另一个类的对象,提供了更灵活的代码结构,而**继承**是“is-a”关系,表示类的继承层次。组合比继承更加松散耦合,更有利于代码的...

    oopda课件下载,有饭食介绍,类组合应用,模板介绍

    类组合与继承(is-a)一起,构成了OOP的核心机制。 - **静态组合**:组合的类对象在运行时数量是固定的,不依赖于对象的实例。 - **动态组合**(聚合):组合的类对象可以在运行时动态创建和销毁,具有更大的灵活...

    UML中继承实现依赖关联聚合组合的联系与区别_线条箭头.doc

    UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...

    C++与操作系统等面试题46

    #### 五、组合与继承的区别 虽然组合和继承都可以用来实现类之间的关联,但它们有着本质的区别: 1. **继承**表示“is-a”关系,意味着一个类是另一个类的一种特例。 2. **组合**表示“has-a”关系,意味着一个类...

Global site tag (gtag.js) - Google Analytics