Java基础:第三十三讲 父类与继承

java类的继承-保姆级篇 文章目录前言java类的继承-保姆级篇01 继承的基本概念:01::02 继承中涉及的角色:01::03 类的继承格式:02 子类对象的实例化过程03 super() 关键字04 如何限制子类使用父类的属性05 重写06 扩展:重载和重写的区别: 前言   如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!! java类的继承-保姆级篇 01 继承的基本概念: 即扩展已有类的功能。 01::02 阅读详情

现实世界中我们可以对各种对象进行分类,并且类还有一定的等级、层次,下面以大家熟悉的动物的分类为例介绍分类的特点。

动物分类学家根据动物的各种特征(形态、细胞、遗传、生理、生化、生态和地球分布)进行分类,即自然分类法,将动物依次分为各种等级。即界、门、纲、目、科、属、种等七个主要等级。其中种是分类所用的基本单位。每一种动物,都可以给它们在这个等级序列中冠以适当的名称和位置。

大熊猫,属于动物界、脊维动物门、哺乳纲、食肉目、大熊猫科、大熊猫属。

现代人类在生物分类系统中的地位是:动物界、脊索动物门、哺乳动物纲、灵长目、人科、人属、智人种。

在这个层次中,越向上抽象程度越高,是对下一层次的分类的共同特征进行了抽象,具有的属性会越少,因为抽象的过程实际上是提取共性,去除个性的过程,是下一级分类的属性的交集。

在这个层次中,在向下描述的时候是增加特征属性的过程,例如我们在描述脊椎动物的时候,脊椎动物是所有体内具有脊椎骨的动物,脊椎动物除了具有脊索动物门的三项基本特征:脊索、背神经管、鳃裂外,还具有一些其他的特征(http://baike.baidu.com/view/345393.htm)。

也就是说脊椎动物首先是动物,然后具有一些显著的特点。这样脊椎动物的属性就是动物具有的属性和脊椎动物特有的属性。

现实世界中的分类以及类的层次关系与软件系统中对象的分类和类的层次关系是相同的。

1、父类、子类、祖先类、子孙类

在类的分层中,相邻层次的类,处于顶层的称为父类,处于下面一层称为子类。

子类具有父类的所有属性,子类具有比父类更多的属性。例如脊椎动物具有动物的所有属性,而脊椎动物还具有一些特殊的属性。

如果某个对象属于子类,那他肯定属于父类。例如,人属于脊椎动物,人肯定属于动物。

父类包含更多的对象,动物除了包含所有的脊椎动物之外,还包括非脊椎动物,是对更多对象的抽象,能够表示更多的对象。

在类层次中,处于某个类之上的所有层次都可以称为当前层的祖先类。例如,动物界、脊索动物门、哺乳动物纲、灵长目都可以称为人科的祖先类。 

在类层次中,处于某个类之下的所有层次都可以称为当前层的子孙类。例如,脊索动物门、哺乳动物纲、灵长目和人科都属于动物的子孙类。

有时候使用超类来表示父类,通常情况下不需要严格区分父类与祖先类,子类与子孙类。

2、单继承与多继承

在现实世界我们按照某种方式进行分类的时候,类的层次结构通常表现为一颗倒立的树,具体下面的特点:树中的每个节点可以有1个父类或者没有父类(最顶层),可以有多个子类或者没有子类(最下层)。这种情况称为单继承。

有一些情况下,根据分类的标准可能会造成某个子类有多个父类,例如:对学校中的人员进行分类,按照工作情况分工,可以分为学生、教师、后勤,按照是否为党员划分可以分为党员和群众。这样对于一个学生党员来说,他的父类可以是学生也可以是党员,就有两个父类了。具有两个或者多个父类称为多继承。

在Java中直接支持单继承,多继承需要通过实现接口来实现,关于接口在后面介绍。

3、实现继承

通过关键字extends实现继承,例如类B继承了类A,可以写成:

public class A{

    // 父类A中的属性

}

public class B etends A{

    // B中特有的属性

}

实现继承之后B类的属性就包括B中重新定义的属性以及从A类继承过来的属性。

4、Object类

Object类是所有类的祖先类,是最顶层类。

如果某个类没有定义父类,则父类就是Object。

上面的类A没有声明父类,它的父类就是Object。

关于Object的用法在后面单独介绍。

5、抽象与派生

在3中,我们先定义了类A,在A中定义了属性。然后定义了类B,继承自类A,并增加了一些属性,这样类B的属性就包括从A中继承的属性以及重新定义的属性。这个过程称为从类A派生出类B。

如何知道父类中有哪些属性,子类中有哪些属性,要创建多少个类呢?

这是面向对象分析与设计需要完成的任务,父类的出现主要是为了让多个子类共享代码,也就是把多个子类中重复的代码提取出来形成父类,这是一个抽象的过程,抽象出各个子类共同代码。例如,学校的选课系统包含学生和教师,正常情况下我们会创建教师类和学生类,但是学生类和教师类会包含一些相同的属性和方法,例如姓名、性别、联系方式等,如果在学生类和教师类中都要维护这些信息,当某个属性发生改变的时候需要修改两个类,并且明显存在着代码重复的问题,这时候可以考虑把共同的属性和方法提取出来生成一个新类,作为学生类和教师类的父类。

下面的代码展示了这个过程:

抽象之前:

public class Student{

   public String name;

   public String studentId;

   public String class;

   public String sex;

   public String address;

   public String phone;

   //相关方法

}

public class Teacher{

 

   public String name;

   public String teacherId;

   public String department;

   public String sex;

   public String address;

   public String phone;

   //相关方法

}

抽象之后:

public class Person{

 

 

   public String name;

   public String sex;

   public String address;

   public String phone;

   // 共享的方法

}

public class Student extends Person{

   public String studentId;

   public String class;

   // 学生类特有的方法

}

public class Teacher extends Person{

   public String teacherId;

   public String department;

   // 教师类特有的方法

}

是否是所有的方法和属性都可以继承呢?哪些可以继承?请听下回讲解。

下一次:第三十四讲 包
李绪成 优快云 Blog: http://blog.youkuaiyun.com/javaeeteacher

 

 

基于 Node.js + MongoDB 技术栈的小众开源短链接程序 —— Lynx 开源的短链接程序有很多,像 YOURLS、Shlink 等大多采用 PHP + MySQL 技术栈。但我之前的服务器配置一般,再加上自己写的小玩具使用的是 Node.js + MongoDB,这些环境已经装在服务器上了,因此更倾向于寻找一款同样基于这套技术栈的短链接程序。搜索了很久才找到这么一款基于的短链接程序——Lynx。这个开源项目非常小众,Star 数只有两百多。 阅读详情

相关推荐

遥感生态指数(RSEI)——四个指数的计算

遥感生态指数是在4个生态指数的基础上通过主成分变换得出的一个评价生态环境质量的指标。因此,第二部分就是要分别计算出这4个指数的值。 ①首先,是绿度指数的计算,一般用归一化植被指数(NDVI) NDVI=(NIR-Red)/(NIR+Red) 在Bandmath工具中输入NDVI计算公式 (float(b4-b3))/(b4+b3) 其中,b3、b4分别是红波段和近红外波段 ②其次,是湿度计算。 WET = c1B1 + c2B2 + c3B3...

qq_41978498的博客 9万+

子类成员数目一定大于等于父类成员数目

欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。1 问题描述这个问题是来源于我的导师给我提出的问题,在学...

算法与编程之美 5153

脑电数据预处理八:基于 ICA 的伪迹去除

摘要: 脑电图(EEG)数据分析中,伪迹(如眼电、心电、肌电)与脑电信号频谱重叠时,独立成分分析(ICA)成为有效工具。ICA通过盲源分离将混合信号分解为统计独立的成分,识别并移除伪迹后重建干净信号。MNE-Python实现步骤包括:数据预处理(滤波、坏导处理)、ICA分解、人工与自动结合识别伪迹成分、剔除后重建数据。实践建议强调人工检查的重要性,避免过度使用ICA,并保存模型以提高效率。该方法显著提升数据质量,为后续分析奠定基础。

qq_32516809的博客 1660

Java 判断一个类是否是另一个类的子孙类

定义三个类,关系如下 class A {} class B extends A {} class C extends B {} 测试三个方法instanceof、isInstance、isAssignableFrom 测试代码如下 A a = new C(); B b = new C(); C c = new C(); System.out.println(a inst...

张恒的博客 1万+

别再只用线性回归了!用sklearn的核岭回归搞定非线性数据(附RBF核调参实战)

本文详细介绍了如何使用sklearn的核岭回归处理非线性数据,特别是RBF核的应用与调参实战。通过网格搜索找到最佳参数组合,核岭回归能有效捕捉数据中的复杂波动,显著提升模型性能。适合需要解决非线性问题的数据科学家和机器学习工程师。

weixin_34246529的博客 339

解锁机器人动态平衡算法:从原理到实践

机器人的动态平衡,是指机器人在运动过程中,面对各种复杂的动态变化和外界干扰,依然能够维持稳定状态,不发生倾倒或失去控制的能力。它就像是一位技艺精湛的舞者,在舞台上翩翩起舞时,无论做出多么复杂的动作,都能巧妙地调整身体姿态,始终保持平衡,展现出优美的舞姿。在实际应用中,机器人的动态平衡对于其稳定运行起着至关重要的作用。以双足机器人为例,当它行走在不平整的地面上时,地面的起伏会使机器人的重心不断发生变化。如果没有良好的动态平衡能力,机器人就很容易因为重心偏移而摔倒,无法完成行走任务。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3839

继承之父类

初步认识继承以及父类和子类

达斯米奇的博客 814

# 【WorkBuddy专栏33】工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

AI人人懂 2156

设计一个父类,并派生多个子类

设计一个父类,表示游戏角色:派生出多个子类用于表示不同职业的角色。为每个类设计必要的属性和方法,并实例化

Fitz的博客 3577

手把手教你学Simulink——基于重复控制(RC)的并网逆变器场景实例:基于RC的单相并网逆变器仿真

本次教程深入剖析了重复控制(RC)在单相并网逆变器中的应用,解决了周期性谐波抑制这一核心难题。核心收获RC是谐波抑制的“核武器”:它利用内模原理,对所有周期性谐波提供无限大增益,实现理论上无静差的跟踪和抑制。PI+RC是黄金组合:PI提供快速响应,RC提供稳态精度,二者结合,兼顾了动态与稳态性能。结构简单,效果卓越:相比多个PR控制器,RC仅需一个模块,即可抑制所有谐波,设计简洁。电能质量的终极追求,是波形的纯净。重复控制,如同一位不知疲倦的校对员它记住每一次错误(上一周期的误差),

MHD0815的博客 189

宇树G1开发实践--PPT汇报(基础版)

本文介绍了一套基于宇树G1人形机器人的PPT自动演示系统,可实现"一键启动、自动演讲"功能。系统通过多线程同步技术,将音频播放与机器人动作完美结合,支持12种预设社交互动动作。硬件依赖宇树G1机器人、外接音响和网络连接,软件采用Python SDK和ALSA音频工具。核心功能包括音频文件自动排序、外接音响播放控制、机器人动作执行及音画同步。使用时需配置网络接口和音频设备号,运行后自动按顺序播放音频并执行随机动作。系统特别强调了安全注意事项,并提供了常见问题解决方案,适用于展会、汇报等需要

m0_47999117的博客 511

java中的继承——父类与子类的关系

父类引用指向子类对象时

Loobeeke的博客 1万+

RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络

本文记录的是利用颈部结构优化RT-DETR的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 2230

Java基础:子类与父类、子类与对象的关系、子类与父类同包时、不同包时的继承性

继承:是一种由已有的类创建新类的机制。 1、利用继承这个机制,可以先定义一个共有属性的一般类,根据这个类再分别定义具有特殊属性的子类,子类继承了一般类的属性和方法,并根据自己的需求创建新的属性和方法; 2、使用Java关键字 extends 来定义一个类的子类,来实现继承机制; 基本格式如下: class Student extends People { .... } 类 Stud...

LagerSwan的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【JAVA】继承:父类与子类的理解(实例)

一、父类与子类的一个实例 package HELLO; //====================== 【Father类 - 父类】 class Father { public void print1() // { print2(); } public void print2() { System.out.println("我是父类中的【prin...

【敦厚的曹操】的专栏 5481

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Java基础】Java子类能继承父类中的哪些内容

构造方法无论私有或非私有都不能继承,成员变量与其相反,成员方法私有不能继承

2202_75462083的博客 4010

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java 子类覆盖了父类方法 能有什么办法调用父类的方法_Java基础教程,第十讲,继承...

前面我们学习了类和对象的概念,学习了方法的重载,今天我们将学习面向对象另一个重要特性,继承(inheritance)。利用继承,我们可以基于一个已经存在的类狗仔一个新的类,继承已经存在的类方法和域。并且我们可以添加一些新的方法和域。这是面向对象编程一个非常重要的特性。学完此次课程,我能做什么?学完此次课程,我们将了解Java的继承、子类、父类的概念,以及如何使用。学习此次课程,需要多久?5-10分...

weixin_29898627的博客 1057

java中子类继承父类时是否继承构造方法?

答案是:java中子类是不会继承父类的构造函数但是可以调用 父类 Animal: package encryption; public class Animal { private String name = "animal"; public Animal() { System.out.println(".....this is Animal....

那些年的代码 1万+

java子类继承父类_子类可以继承父类的什么

展开全部子类可以获得除private权限以外的所有父类属性,但是:1、在子类继承62616964757a686964616fe58685e5aeb931333431343130父类的时候,子类必须调用父类的构造函数。2、如果父类有默认构造函数,子类实例化时自动调用,但如果父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数。3、还有在java的继承当中子类是不可...

weixin_39803977的博客 9192

子类继承父类时会继承什么

1.首先,我们都知道子类继承父类会继承父类的非private属性和方法。 2.接下来我有个疑问,父类继承了一个祖父类,子类再继承父类,子类继承祖父类吗? 先说答案,是的,子类也会继承祖父类 //祖父类 public class grandFather { } //父类继承祖父类 public class father extends grandFather{ } //现在子类继承父类 public class child extends father{ public static void mai

weixin_41570207的博客 4578

子类继承父类的所有属性和方法_Java基础之继承

什么是继承»如果多个类中有相同属性和方法,能否单独编写一个类? ----能» 解决办法:■将多个类中相同的属性和方法编写在单独一个类中,该类称为父类■在子类继承父类,然后在子类中编写独有的属性和方法 继承好处» 好处:减少代码的冗余性(重复性) 编写继承代码步骤第一步:编写父类[修饰符] class 类名{//属性和方法}第二步:编写子类 [修饰符] class 子类类名 extends 父类类名...

weixin_39869043的博客 4706

Java关于子类父类的继承问题

Java关于子类父类的继承问题 一. 继承的定义 在Java中,继承是让一个类获得另一个类的属性和方法。继承的是子类,被继承的被称为父类。 继承的关键字是 extends ,在子类类名后直接使用extends + 父类类名即表示子类继承父类。 此外,Object是默认的父类,不含extends的类其也有默认的父类类名为Object,许多默认的方法在有时会有不小的作用 这里子类创建的对...

qq_44897539的博客 1825

【Java基础】类的继承,父类与子类关系

多态 父类 p = new 子类(); 向上转型 变量shape可以引用任何Shape子类类型的对象,这叫多态,即一种类型的变量,可以一用多种实际类型对象。 对于变量shape,它就有两个类型,Shape,称之为shape的静态类型;类型Circle、Line、ArrowLine,称之为shape的动态类型。 在ShapeManager的fraw方法中,shapes[i].draw()调用的是其对应动态类型的draw方法,这称之为方法的动态绑定。 ...

张茂祯的博客 1800

java父类的私有方法可以被继承吗_Java基础教程,第十讲,图解继承

前面我们学习了类和对象的概念,学习了方法的重载,今天我们将学习面向对象另一个重要特性,继承(inheritance)。利用继承,我们可以基于一个已经存在的类狗仔一个新的类,继承已经存在的类方法和域。并且我们可以添加一些新的方法和域。这是面向对象编程一个非常重要的特性。学完此次课程,我能做什么?学完此次课程,我们将了解Java的继承、子类、父类的概念,以及如何使用。学习此次课程,需要多久?5-10分...

weixin_39755712的博客 173

java中子类继承了父类的哪些成员

一个类只能有一个父类,但可以被多个子类同时继承。那么java中到底能从父类中继承哪些成员呢? 假设存在类Parent,有一个私有成员变量a,并且针对该私有成员变量有个public的取得器。如下: public class Parent { private int a; public Parent(int i){ a = i; } public int getA() { retu

guojing8808的专栏 2904

没有父类的Java Class是如何从Object继承的

经常有Java初学者会问为什么一个没有父类的Java类会自动从java.lang.Object类继承。本文将从实践的角度来为大家进行深度剖析。 AD:2014WOT全球软件技术峰会北京站 课程视频发布 经常有Java初学者会问为什么一个没有父类的Java类会自动从java.lang.Object类继承。如下面是一个普通的Java类: public class Test    // 从Ob

congcongsuiyue的专栏 2795
上一篇: Java基础:第三十二讲 静态成员
下一篇: Java基础:第三十四讲 包
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值