继承你不知道的奥秘(《继承》)

createh54个月前 (02-01)技术教程42


东风系列导弹是镇国神器。东风41不是突然就造出来的,之前有很多种东风xx导弹,每种导弹都有自己的独特之处,相同之处都具备导弹基本特点。很多工厂有量产磨具的生产线,盖房子就图纸,建筑设计建设都有参考,小到分子、原子,大到地球、星系、宇宙,似乎东西都是类似的,有的又有点不同。继承也是宇宙的本质,也是人类社会的本质,编程语言只不过发现了这个本质,程序员可以创造一个又一个相同、相似或差异甚远的实例,完成需求和功能。


单继承和多继承

狭义的多继承代表继承多个类,而非继承接口,一般提到多继承都是指狭义的多继承。大多编程语言为了简化多继承带来的复杂度,使用接口(interface)或特性(traits).

  • C++是为数不多支持多继承的编程语言。
  • Python也支持多继承,若未指定父类名称,访问父类相同方法名会按照继承父类的顺序依次搜素。
  • Java/C#只支持单继承,用接口实现"多继承"。
  • PHP 5.0引入接口,5.4引入traits.


多继承的困扰

  • 小明有时很困扰,自己的脾气很倔,妈妈说这像他爸,他爸说像他姥姥,大家都要面子,一家人吵的不可开交。
  • 有人说自己是朱元璋18代后代,列出长相哪里哪里像,大部分人无法分辨,因为继承太长了,溯源也找不到实证。
  • 近亲的后代更高概率产生基因缺陷,多继承同样会继承多个父类"不好"的地方,编程语言更倾向继承一个"优秀"类,继承后进一步优化子类,实现真正"优生"。


多继承策略

多继承产生一个很大的问题,继承自不同父类或父父类的相同函数以哪个为准。

  • C3线性化理论是计算机编程中用于在多继承时确定继承的方法顺序。
  • Python引入了Mix-in混入类实现更优雅的多重继承。
  • Vue同样也有Mix-in概念。


继承的访问权限

  • C++提供了private/protected/public三种继承方式,比较复杂。Java/C#/Python仅有(?)public继承,默认不需要显式指明。
  • Python默认会继承父类的属性和方法,但不能继承父类私有的属性和方法(以两个下划线开头)。


继承的形式

  • ObjC、C++和C#用冒号分隔子类和父类。
  • Java用extends关键字。
  • Python用括号将父类包起来,形如class Base(Derived).









若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关文章

你知道子类引用为什么不能指向父类对象吗?反汇编一起看看

在java、C++等面向对象的语言中,实现多态的方式就是使用父类引用指向子类对象,所以父类引用指向子类对象是没有任何问题的,但是,大家有没有想过,子类引用可以指向父类对象吗?答案是不可以!但是为什么呢...

Java:Java中的多重继承问题(java中实现多重继承的方式)

  继承是面向对象编程 (OOP) 语言(如 Java)的主要功能之一。它是一种以增强软件设计中类重用能力的方式组织类的基本技术。多重继承是众多继承类型中的一种,是继承机制的一个重要原则。本文探讨了一...

自学Java6(保姆级教学)——基本数据类型的转换

在上一期的文章中,我们认识了Java的几种运算符,先来简单回顾一下Java共有几类运算符:1.算数运算符:+,-,*,/(加减乘除),加上一个%(取余)2.赋值运算符:=3.关系运算符:˃,˂,==,...

Java|剖析类内的五类成员:属性、方法、构造器、代码块、内部类

Java的哲学是一切皆类,全部代码都写在类内。Java是纯面向对象的编程语言,类是其基石。Java类有五类成员:class Person{ // ① 属性,或成员变量 String n...

「万字干货 | 图文」史上姨母级Java继承详解

首发公众号:bigsai 头条号:程序员bigsai 同时收录在回车课堂课程导学在Java课堂中,所有老师不得不提到面向对象(Object Oriented),而在谈到面向对象的时候,又不得不提到面向...

Java 最细的集合类总结(java中的集合类)

数据结构作为每一个开发者不可回避的问题,而 Java 对于不同的数据结构提供了非常成熟的实现,这一个又一个实现既是面试中的难点,也是工作中必不可少的工具,在此,笔者经历漫长的剖析,将其抽丝剥茧的呈现出...