Java学习手册:组合&继承

北航机器学习期末考试试题2020年春 北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于 阅读详情

一、继承

继承是面向对象中的一个非常重要的特性。通过继承,子类可以使用父类的一些成员变量与方法,从而能够提高代码的复用性,提高开发率。在Java语言中,被继承的类叫基类(superclass)或父类,继承基类或父类的类叫派生类或子类(subclass)。继承是通过extends关键字来实现的,使用格式为:class 子类名extends父类名。

继承主要有以下几个特征:

(1)Java语言不支持多重继承,也就是说,子类至多只能有一个父类,但是可以通过实现多个接口来达到多重继承的目的。(一个类只能继承一个父类——单一继承,一个父类可以有多个子类)

(2)子类只能继承父类的非私有(public和protected)成员变量与方法。

(3)当子类中定义的成员变量和父类中定义的成员变量同名时,子类中的成员变量会覆盖父类的成员变量,而不会继承。

(4)当子类中的方法与父类中的方法具有相同的函数签名(相同的方法名,相同的参数个数与类型)时,子类将会覆盖父类的方法,而不会继承。

(5)继承具有传递性

(6)在子类对象的实例化过程中,构造子类之前必须先构造父类,在子类构造方法的第一句默认有个super()调用父类构造,在子类构造方法中:①若自己不写super()调父类构造,则默认super()调父类的无参构造。②若自己写了,则不再默认提供。(注:super()调用父类构造方法必须位于子类构造的第一句)super()详细解释请点击


二、组合和继承的区别

组合和继承是面向对象中两种代码复用的方式。组合是指在新类里面创建原有类的对象,重复利用已有类的功能。继承是面向对象的主要特征之一,它允许设计人员根据其他类的实现来定义一个类的实现。组合和继承都允许在新的类中设置子对象,只是组合是显式的,而继承则是隐式的。组合和继承存在着对应关系:组合中的整体类和继承中的子类对应,组合中的局部类和继承中的父类对应。

二者的区别在于:继承关系又称“is-a”关系,组合关系又称“has-a”关系。
继承

//Car-汽车对象,Vehicle-交通工具对象,Tire-轮胎对象
//Car是Vehicle的一种,因此是一种继承关系(“is-a”关系)
class Verhicle{}
class Car extends Verhicle{}

组合

//Car-汽车对象,Vehicle-交通工具对象,Tire-轮胎对象
//Car包含了多个Tire,因此是一种组合关系(“has-a”关系)
class Tire{}
class Car extends Verhicle{
	private Tire t = new Tire();
}

组合和继承都可以实现代码的重用,在实际使用的过程中,遵循以下两点原则:

(1)除非两个类之间是“is-a”的关系,否则不要轻易的使用继承,不要单纯的为了实现代码的重用而使用继承,因为过多地使用继承会破坏代码的可维护性,当父类被修改时,会影响到所有继承自它的子类,从而增加程序的维护难度与成本。

(2)不要仅仅为了实现多态而使用继承,如果类之间没有“is-a”的关系,可以通过实现接口与组合的方式来达到相同的目的。设计模式中的策略模式可以很好的说明这一点,采用接口与组合的方式比采用继承的方式具有更好的可扩展性。

由于Java语言只支持单继承,如果想同时继承两个类或多个类,在Java中是无法直接实现的。同时,在Java语言中,如果继承使用太多,也会让一个class里面的内容变得臃肿。所以,在Java语言中,能使用组合就尽量不要使用继承。


三、构造方法可以继承吗?

答案:不能,因为子类继承父类的时候,先运行父类构造函数。


低成本实现webhook接收端[python] Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。 阅读详情

相关推荐

SAP-ML章<<<<第二节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>>

#SAP-ML章<<<<第一节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>> 1.物料账报错提示: ABAP编程错误:RAISE_EXCEPTION ABAP程序:SAPLFCML4H_RUN_PRICES应用组件CO-PC-ACT 2. 物料账报错背景: CKMLCP运行结算时 3. 解决方案: 通过DEBUG查看错误的地方 OKTZ:分析原因为:可能打包或者配置传输时弄错 ...

SAP.David.Gao的博客 1858

Java课程实验报告实验四——面向对象—继承

一、实验目的 1.理解面向对象编程,尤其是继承的思想,学习通过继承,在父类的基础上创建子类 2.使用关键字super调用父类的构造方法和方法 3.在子类中覆盖方法 二、实验内容 1. 【三角形类Triangle】设计一个名为Triangle的类来扩展GeometricObject类。该类包括: (1)三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认...

yeweij226的博客 3122

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 447

为什么组合优先于继承

面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。同样地,在《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。 为什么不推荐使用继承 每个人在刚刚学习面向对象编程时都会觉得:继承可以实现类的复用。所以,很多开发人员在需要复用一些代码的时候会很自然的使用类的继承的方式,因为书上就是这么写的。继承是面向对象的四大特性之一,用来表示类之间的is-a关系,可以解决代码复用的问题。虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的

Hopefully Sky的博客 1万+

基于Opencv+Mediapipe的头部姿态检测

在学生课堂专注度检测项目中,可以通过学生头部姿态来确定学生注意力方向,从而判断其是否专注于课堂。

weixin_67879842的博客 2335

【目标跟踪】基于Kalman滤波实现无人机运动轨迹跟踪附matlab代码

1 简介 在近代控制中,需要对某一特定的运动目标进行跟踪监测,并需要对其下一时间的运动位置,运动方向,速度等信息进行预先估算,才能达到对目标的即时控制.本文简要讨论了用卡尔曼滤波算法对单个目标航迹进行预测,并借助于Matlab仿真工具,对实验的效果进行评估. 2 部分代码 clc; close all; %initial state xo=25; vox=2; %Observations **** % X-Direction Calcula

qq_59747472的博客 4731

Java码农人生开启手册——继承

如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。在构造方法中:this(...)用于调用本类构造方法,super(...)用于调用父类构造方法,两种调用不能同时在构造。父类中protected修饰的成员在不同包的子类中可以直接访问,但是不同包的其他类不可以直接访问。问题:如果子类中存在与父类中相同的成员时,那如何在子类中访问父类相同名称的成员呢?子类对象构造时,需要先调用基类构造方法,然后执行子类的构造方法。

2301_76907962的博客 1094

通过Langchain实现大模型完成测试用例生成的代码(可集成到各种测试平台)

代码中使用的是讯飞spark3.0版本,其中版本在的控制已经封装到了langchain对应的讯飞的iflytek的类中,可以在调用的时候显示控制,默认是spark2.0版本。

Criss@陈磊 2362

由“为什么VO不能继承PO?” 引出的为什么组合优于继承?

我在个人项目中喜欢直接使用各种 `model` 来继承 `po`,单纯的因为可以直接省去写各种重复 `getter` 和 `setter` 的步骤,并且不需要使用各种拷贝工具。但是,搞`vo`、`do`、`po`,还有其他各种 `o`,是为了解藕它们之间的联系,而继承却是建立它们之间的耦合关系,确实是会限制类的扩展性和灵活性。

ShockChen7的博客 1430

ANSYS——模态分析的理论基础

ANSYS模态分析理论基础

python_AI_fans的博客 9081

超分辨率重建:ESPCN与SRGAN技术对比

超分辨率重建:ESPCN与SRGAN技术对比​ 人工智能,计算机视觉,大模型,AI,超分辨率重建是一种通过技术手段,将低分辨率图像转换为高分辨率图像的过程。它的目的是恢复低分辨率图像中丢失的细节信息,使图像具有更高的清晰度和视觉质量。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

面试官:Java 设计原则中,为什么反复强调组合要优先于继承?

来源:blog.youkuaiyun.com/fuzhongmin05/article/details/108646872 面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。 同样地,在《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。 这个可以在公众号Java核心技术回复:手册,获取最新高清完整版PDF。 为什么不推荐使用继承 每个人在刚刚学习面向对象编程时都会觉得:继承可以实现类的复用。所以,很多开发人员在需要复用一些代码的时候会很自然的

Java技术栈,分享最主流的Java技术 1477

基于强化学习的多无人机路径规划

我们使用了Dueling Double Deep Q-Network(DDDQN)算法来训练智能体,这个算法在深度Q学习算法的基础上进行了升级,具有更快的收敛速度和更好的性能。本文提出了一种基于强化学习的算法,实现了多无人机路径规划,并提供相应的MATLAB代码。通过基于强化学习的多无人机路径规划算法,我们能够高效地解决复杂环境下的任务需求,并在实际应用中取得了良好的效果。首先,我们定义了状态空间和动作空间。实验结果表明,我们的方法能够有效地解决多无人机路径规划问题,提高了任务完成的效率和准确率。

DjjPython的博客 820

[java篇]包和继承,组合

????包 初识java的小伙伴看到包,肯定会想,包?是挎在肩上的名贵包包吗?哈哈,博主开玩笑了,当然了在java中的包。 引言: 假如说在公司的日常生产开发中,你建立了一个TestDemo.java文件,而你的同事也建立了一个TestDemo.java文件,如果你们两个人要完成同一个项目,那么由于用相同的文件名,编译器就会反应异常。所以我们在这就引出了包。在不同的包中创建相同的java文件,是不会报错的。 包是组织类的一种方式。 使用包的主要目的是保证类的唯一性,其实包就相当于一个文件而已。 ????导入

qq_54883034的博客 863

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

面向对象编程(包,继承,组合)

包包含义导入包中的类继承组合 包 包含义 (package) 是组织类的一种方式,使用包的主要目的是保证类的唯一性.(包实际上在直观来看就是一个文件夹而已! !如我们在编写程序的时候创建了一个project项目,打开文件的存储目录,project里面有一个文件夹src就是一个包,我们打开目录就可以看到我们创建的java文件了,再如jar包里面包含的都是字节码文件,它们都是类文件)。 那么为什么要组织类呢???? 假如在实际开发过程中,你在代码中写了一个 Test 类. 然后你的同事也可能写一个 Test .

weixin_47792933的博客 778

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java学习手册:Java面向对象面试问题

Java学习手册:Java面向对象面试问题

浩比的专栏 821

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java:Effective java学习笔记之 复合优先于继承

Java复合优先于继承复合优先于继承1、实现继承和接口继承2、在实际开发中继承的缺点2.1、子类依赖于其超类中特定功能的实现细节3、什么是复合?3.1、书上案例4、复合相比较于继承的优点和缺点5、何时使用继承,何时使用复合?参考 复合优先于继承 面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。同样地,在《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。 1、实现继承和接口继承 实现继承:当一个类扩展另一个类的时候 接口继承:当一

JMW1407的博客 1272

为什么阿里巴巴建议开发者谨慎使用继承?

从学习Java的第一天起,我们就知道Java是一种面向对象语言,而学习Java的第二天,我们就知道了面向对象的三大基本特性是:封装、继承、多态。 所以,对于很多开发者来说,继承肯定都是不陌生的。但是,继承一定适合所有的场景吗?毫无忌讳的使用继承来做代码扩展真的好吗? 为什么《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。 本文就来针对这...

【小石头的茅坑】 71万+

在设计原则中,为什么反复强调组合要优于继承?

面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。同样地,在《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。为...

Java知音 525

软件工程:合成复用原则,组合优于继承

方面继承组合耦合度紧耦合(白盒复用)松耦合(黑盒复用)灵活性编译时确定,静态运行时可变,动态破坏封装可能破坏父类封装保持各自封装性类爆炸容易产生多层继承避免类层次过深测试需要测试整个继承链可以单独测试组件组合优于继承不是一个“技巧”,而是一种范式转变:从静态层次到动态组装,从同步阻塞到事件响应。它让我在设计时总是问自己:“这个行为是‘是’还是‘有’?能否模块化?”在快速迭代的业务环境中,这种思想能显著降低技术债,推动系统演化。

北极星的博客 636

原创 | 为什么阿里巴巴建议开发者谨慎使用继承?

△Hollis, 一个对Coding有着独特追求的人△这是Hollis的第227篇原创分享作者 l Hollis来源 l Hollis(ID:hollischuang)...

HollisChuang's Blog 600

面向 Android 开发的 Java 学习手册(二)

原文:Learn Java for Android development 协议:CC BY-NC-SA 4.0 四、探索继承、多态和接口 基于对象的语言是一种封装了对象的状态和行为的语言。Java 对封装的支持(在第三章中讨论)使它成为一种基于对象的语言。然而,Java 也是一种面向对象语言,因为它支持继承和多态(以及封装)。(面向对象语言是基于对象语言的子集。)在第四章中,我将向你介绍 Java 支持继承和多态的语言特性。此外,我还将向您介绍接口,这是 Java 的终极抽象类型机制。 构建类层次结构

龙哥盟 1353

阿里巴巴Java开发手册的正确学习姿势是怎样的? | 文末送书

△Hollis, 一个对Coding有着独特追求的人△这是Hollis的第243篇原创分享作者 l Hollis来源 l Hollis(ID:hollischuang)很多人都知道,阿...

HollisChuang's Blog 1446
上一篇: Java学习手册:(数据结构与算法-栈与队列)如何用两个栈模拟队列?
下一篇: Java学习手册:内存泄漏
浩比浩比
博客等级 码龄12年 395粉丝 202原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值