java基础学习
多态_abstract_接口_final多态polymorphism在方法调用时自动识别所调用方法的对象并根据实际对象去调用相应方法。如果满足以下三个条件那么构成多态继承方法的重写父类引用指向子类对象为了实现高内聚低耦合的特点例子士兵上战场拿着不同武器杀敌1.武器类当加上abstract的时候也是下面要提到的抽象类只是起到一个被继承然后重写方法的作用package com.fyzy.poly2; public class Weapon { public void attack(){ System.out.println(武器攻击); } }2.士兵类package com.fyzy.poly2; public class Soldier { public void killEmple(Weapon w){ //这里的Weapon w就是起到了一个父类引用子类对象的作用 System.out.println(士兵上战场杀敌); w.attack(); } }3.不同武器的类//武器AK47 package com.fyzy.poly2; public class AK47 extends Weapon{ public void attack(){ System.out.println(使用AK47攻击); } } //武器M4a1 package com.fyzy.poly2; public class M4a1 extends Weapon{ Override public void attack() { System.out.println(使用M4a1攻击); } }4.Test测试package com.fyzy.poly2; public class Test { public static void main(String[] args) { //可见这里也没有实例化Weapon类 AK47 ak47 new AK47(); M4a1 m4a1 new M4a1(); Soldier s new Soldier(); s.killEmple(ak47); s.killEmple(m4a1); } }abstract 关键字用abstract 修饰的类叫做抽象类用abstract 修饰的方法叫做抽象方法。如果一个类中有抽象方法那么这个类必须是抽象类抽象类不能被实例化只能用来被继承抽象方法没有方法体只有方法的声明抽象类的子类必须重写其继承的抽象方法还是上面的那个例子将Weapon添加上abstract关键字package com.fyzy.TestAbstract; public abstract class Weapon { public void attack(){}; }它的其子类像AK47或者M4a1都必须重写这个attack方法接口interface接口可以看成是一个特殊的抽象类接口不能被实例化只能被实现implements接口中的默认属性都是由 public static 修饰方法都是由 public abstract修饰如果一个类实现了某个接口那么必须要重写接口中的所有方法接口可以帮助解决java中不支持多继承的情况一个类只能继承自一个父类但可以实现多个接口[修饰符] interface 接口名{ [public static] 属性 [public abstract] 方法 }例子package com.fyzy.TestInterface; public interface Gun { void shoot(); }package com.fyzy.TestInterface; public class AK47 extends Weapon implements Gun{ public void attack(){ System.out.println(使用AK47攻击); } Override public void shoot() { System.out.println(记得压枪不然飘); } }package com.fyzy.TestInterface; public class Test2 { public static void main(String[] args) { Gun g new AK47(); Weapon w new AK47(); //使用方法也是按照父类引用子类的方式可以将它当成一个枪看也可以当成一个武器来看 g.shoot(); w.attack(); } }类的完整声明格式[修饰符] class 类名 [extends 父类名] [implements 接口1接口2……]{ 属性 方法 }final 关键字final 修饰的变量不能改变final 修饰的类不能被继承final 修饰的方法不能被重写public class Test { public static void main(String[] args) { final int a 1 ; //final 修饰的变量不能改变 // a 20; } final class A{ } //final 修饰的类不能被继承 class B extends A{ } class AA{ public final void fun(){ } } class BB extends AA{ //final 修饰的方法不能被重写 public void fun(){ } } }

相关新闻

如何用开源工具打造专业声音作品?OpenUtau全流程指南

如何用开源工具打造专业声音作品?OpenUtau全流程指南

如何用开源工具打造专业声音作品?OpenUtau全流程指南 【免费下载链接】OpenUtau Open singing synthesis platform / Open source UTAU successor 项目地址: https://gitcode.com/gh_mirrors/op/OpenUtau 在数字音乐创作领域,专业声音合成工具往往…

2026/7/4 14:24:19 阅读更多 →
5大迁移陷阱与解决方案:ESP32 Arduino LEDC PWM从2.x到3.0实战指南

5大迁移陷阱与解决方案:ESP32 Arduino LEDC PWM从2.x到3.0实战指南

5大迁移陷阱与解决方案:ESP32 Arduino LEDC PWM从2.x到3.0实战指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 一、问题诊断:升级后PWM功能异常的根源分析 1.…

2026/7/5 8:52:33 阅读更多 →
3个维度打造学术效率引擎:Zotero Connectors知识管理全攻略

3个维度打造学术效率引擎:Zotero Connectors知识管理全攻略

3个维度打造学术效率引擎:Zotero Connectors知识管理全攻略 【免费下载链接】zotero-connectors Chrome, Firefox, and Safari extensions for Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-connectors 在信息爆炸的学术世界,每一…

2026/7/5 7:36:04 阅读更多 →

最新新闻

聊天智能体开发基础

聊天智能体开发基础

如今AI已经能够在生活中的方方面面帮助我们,我也想做一个为自己量身定做的智能体,那么,下面我就介绍一下如何创建一个小智能体。 一、准备工作 1.APIKey 要在我们的项目中接入市面上的大模型,APIKey是必不可少的,下面我…

2026/7/6 14:53:46 阅读更多 →
个人介绍及学习目标

个人介绍及学习目标

我是一名准大学生,正在学习编程,边学边探索未来专业方向和就业目标 我的编程目标是学会C语言,辅助将来工科专业学习(本人喜欢工科>计算机,但是如果C语言学习中发现自己很喜欢很擅长计算机的话也许会报计算机&#x…

2026/7/6 14:53:46 阅读更多 →
于 Simulink 的双向 DC-DC 变换器在恒压(CV)与恒流(CC)模式下的切换仿真

于 Simulink 的双向 DC-DC 变换器在恒压(CV)与恒流(CC)模式下的切换仿真

目录 一、 核心原理:双闭环控制与模式无缝切换 1. 双闭环控制架构 2. CC 与 CV 模式的切换逻辑 3. 防止“反复横跳”的滞回比较器 二、 Simulink 建模步骤(手把手) Step 1:搭建双向 Buck-Boost 主功率级 Step 2:构建双闭环控制器与 PI 参数整定 Step 3:实现 CC-C…

2026/7/6 14:51:44 阅读更多 →
YOLOv10模型改进-特定领域应用-第96篇:YOLOv10改进策略【特定领域应用】| YOLOv10在无人机巡检中的应用

YOLOv10模型改进-特定领域应用-第96篇:YOLOv10改进策略【特定领域应用】| YOLOv10在无人机巡检中的应用

一、本文介绍 本文记录的是YOLOv10在无人机巡检领域的应用。无人机巡检需要检测电力设施、道路状况、建筑物损伤等目标,YOLOv10凭借其高效的推理速度和准确的检测能力,成为无人机巡检领域的首选目标检测算法。 二、无人机巡检场景分析 2.1 检测目标 无人…

2026/7/6 14:45:39 阅读更多 →
路由模式:智能分发 + 垂直 Agent

路由模式:智能分发 + 垂直 Agent

路由模式:智能分发 垂直 Agent路由模式的核心是智能分发——根据任务类型、内容或上下文将请求路由到不同的垂直 Agent。读完你能设计出适配多种场景的路由层,理解分类器精度与兜底策略的关键 trade-off。一、概念速查 1.1 什么是路由模式 路由模式&…

2026/7/6 14:45:39 阅读更多 →
用 grill-me 推导盘前简报 MVP:12 题钉边界 + schema 收束

用 grill-me 推导盘前简报 MVP:12 题钉边界 + schema 收束

1. grill-me skill是什么、解决什么问题 grill-me skill 的核心就一条:一次只问一个问题,沿决策树把你逼到边界清楚。 和普通「帮我设计一个系统」的区别:普通对话grill-meAI 一次吐完整方案逐题确认,你不同意就改容易过度工程每题…

2026/7/6 14:45:39 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻