之前,我们一直在使用学生类,假如现在需要编写一个学生的管理系统,自然就要用到学生类。下面我们定义一个Student类。
/**
* 定义一个Student类
* @author HP
*
*/
public class Student {
private String name;//声明一个姓名属性
private int score;//声明一个学分属性
/**
* 设置姓名属性值的方法
* @param name参数要赋值给属性name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取姓名属性值的方法
* @return 返回name属性的值
*/
public String getName(){
return name;
}
/**
* 学生的学习方法
*/
protected void study(){
score++;
System.out.println(name+"正在学习中,学分是"+score);
}
}
但是这里的学生不仅包括大学生,中学生,还包括小学生。那么,要是每次都重新定义一个学生类的话,未免有点浪费时间和精力,这时候,我们就用类的继承,来减少重复的代码,提高程序的扩展性。
类的继承的基本格式是:
public class 类名(子类) extends 类名(父类)
{
//代码
}
我们定义一个大学生类,让它继承学生类,代码如下:
/**
* 定义一个大学生类,该类继承自学生类
* @author HP
*
*/
public class UNStudent extends Student
{
}
同时子类也称为超类,父类也称为基类。
在继承的时候,子类可以继承到父类所有的属性和方法。比如在学生类中定义一种学习方法,让大学生类去继承学生类,那么大学生类便会自动继承学生类的学习方法。需要注意的是,使用子类实例化的对象,不一定能调用父类的属性和方法。子类只能调用父类共有的、守保护的、默认的属性和方法,对于私有的属性和方法是不能够调用的。
对于UNStudent类,虽然我们没有定义它的属性和参数,但是由于它继承了Student类,所以它自动具备了Student类的属性和方法。以下是代码
//程序入口
public static void main(String [] args)
{
//实例化大学生类
UNStduent uns = new UNStduent();
//调用从学生类继承过来的属性和方法
uns.setName("我是大学生");
uns.study();
}
其运行结果是我是大学正在学习,学分是1。
在继承的时候,会遇到子类所需要的方法是父类所没有的。比如大学生类需要新的学习方法。这时候就需要方法重写。方法重写的条件是:
1、方法的返回值类型,方法名,参数个数,参数类型以及参数的顺序必须要完全相同。
2、方法的访问修饰符可以不同,但是子类中方法的修饰符必须要大于父类方法的访问修饰符。
在调用方法的时候,只要是实例化的对象是子类的,那么就会优先调用子类中的方法,如果子类中没有这个方法,则调用父类中的方法。
比如我们在大学生类中定义一个新的学习方法,并且调用它,代码如下:
//在子类中定义新的学习方法
public class UNStduent exstends Stduent
{
public void study()
{
System.out.println(getName()+"有新的学习方法啦!");
}
}
//在主函数中调用学习方法
//程序入口
public static void main(String [] args)
{
UNStduent uns = new UNStduent();
UNS.setName("我是大学生");
UNS.study();
}
其运行结果是我是大学生有新的学习方法啦!
子类对象自动转换成父类类型称为自动转型。使用自动转型的条件是必须存在继承关系。其格式是:
1.类名 对象名 = new 子类名();
Student stu = new UNStudent();
2.public 返回值数据类型 方法名(父类名 对象名)
{
对象名.方法名();
}
自动转型的优点是可以提高代码的重用性,它的缺点是如果使用了自动转型,就不能用对象名去调用子类中定义的方法,否则程序会报错。
多态实质相同类型的对象调用相同方法的时候,由于继承和重写的机制,得到的结果不一定相同,或者说只有当具体执行uns.study()的时候们才知道这个uns是什么类的对象。
分享到:
相关推荐
Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rarIPCV分配-V6 2024-01-21 6:10 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括7012张图像。 家庭废物以createMl格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 没有应用图像增强技术。
Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。
谁喜欢谁下载,没啥商业价值,comsol也能做,不过我这产量更大
Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
推箱子Python小游戏
该新媒体视域下的中国古诗词展演主要为管理员和用户两类用户角色提供需求,管理员在后台可以对系统进行全面管理,用户在前台可以进行查看系统信息,注册登录,查询校园失物,评论,下载校园失物等操作。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7
内容概要:本文介绍了使用MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多特征分类预测模型。通过PSO优化BiLSTM模型的超参数、引入注意力机制增强模型的特征提取能力,提升了多维度数据的分类精度。模型在金融风险预测、医疗健康预测、交通流量预测等多个领域具有广泛的应用前景。项目详细描述了模型架构、代码实现、训练与优化、模型评估与可视化、以及GUI界面设计等方面的内容。 适合人群:具备一定编程基础,工作1-3年的数据科学家和机器学习工程师。 使用场景及目标:① 金融、医疗、交通等领域的多特征分类预测任务;② 结合PSO优化BiLSTM超参数、引入注意力机制,提升模型预测准确度。 阅读建议:本文详细讲解了模型的理论背景、算法实现和应用案例,适合希望深入理解深度学习和优化算法的读者。建议结合代码和实际数据进行实验,以便更好地掌握模型的设计和优化过程。
Java项目-基于SSM的物资管理系统项目源码
Video_2024-12-18_000023.wmv
Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
系统实现: 用户功能模块:用户点击进入到系统操作界面,可以对主页、个人中心、我的收藏管理、订单管理等功能模块,我的收藏管理:通过列表可以获取用户ID、收藏ID、表名、收藏名称、收藏图片信息并进行修改操作 管理员功能模块:管理员通过用户名和密码填写完成后进行登录。管理员登录成功后进入到系统操作界面,可以对主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等功能模块进行相对应操作。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7
1、嵌入式物联网单片机项目开发实战。例程经过精心编写,简单好用。 2、代码使用KEIL 标准库开发,当前在STM32F103运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。
项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7
Java项目-基于SSM的网上淘书吧
内容概要:本文详细介绍了 Oracle 19c 中的闪回技术,包括闪回查询、闪回事务查询、闪回丢弃、闪回表、闪回数据库和闪回归档。具体讲解了每种闪回技术的原理、配置方法、操作步骤和限制条件,并提供了具体的实例和 SQL 命令。目的是帮助数据库管理员和开发人员理解和掌握如何利用这些技术来提高数据恢复和错误修复的能力,减少数据库管理的复杂性和风险。 适合人群:Oracle 数据库管理员、数据库开发人员及维护人员。 使用场景及目标:① 使用闪回技术快速恢复因误操作或其他错误导致的数据丢失;② 配置闪回技术以实现高效的数据库恢复;③ 在日常运维中监控和管理闪回操作。 其他说明:本文不仅提供了理论上的解释,还包含了实际操作的示例,以便读者能够更好地理解和应用这些技术。