当前位置: 首页 > article >正文

Java面向对象

一 定义面向对象编程的本质是以类的方式组织代码以对象的组织封装数据三大特性封装继承多态二 类与对象的创建new去实例化package opp.Demo2; //学生类 public class Student { ​ //属性字段 String name; int age; ​ //方法 public void study(){ System.out.println(this.name在学习); } ​ } /*public static void main(String[] args) { ​ //类抽象的实例化 // 类实例化后会返回自己的对象 //student对象就是一个Student类的具体实例 ​ Student xiaoming new Student(); Student xiaohong new Student(); ​ xiaoming.name小明; xiaoming.age3; ​ System.out.println(xiaoming.name); System.out.println(xiaoming.age); ​ xiaohong.name小红; xiaohong.age3; ​ System.out.println(xiaohong.name); System.out.println(xiaohong.age); ​ } */三 构造器的使用1和类名相同 2没有返回值 作用 1.new本质在调用方法 2.初始化对象值 注意点 定义有参构造之后如果想使用无参构造显示的定义一个无参的构造快捷键alterinsert改为 鼠标右键加生成package opp.Demo2; ​ public class Person { ​ String name; int age; //无参构造 //1.使用new关键字 //2.用来初始值 public Person() { } //有参构造一旦定义了有参构造无参就必须显式定义 public Person(String name) { this.name name; } // 鼠标右键点击生成altinsertshift可以同时选择俩个 public Person(String name, int age) { this.name name; this.age age; } /* public static void main(String[] args) { ​ //new 实例化了一个对象 Person person new Person(xiaoming,3); ​ System.out.println(person.name); } ​ 构造器 1和类名相同 2没有返回值 作用 1.new本质在调用方法 2.初始化对象值 注意点 1.定义有参构造之后如果想使用无参构造显示的定义一个无参的构造 快捷键alterinsert改为鼠标右键加生成 */ }四 JAVA 三大特性1 封装数据的隐藏通常应禁止直接访问一个对象的数据的实际表示而应通过操作接口来访问这叫信息隐藏属性私有get/setpackage oop.Demo3; /*封装 1.提高程序的安全性保护数据 2隐藏代码的细节 3.统一接口 4.系统的可维护性 */ ​ //类 public class Student { ​ //名字 private String name; //学号 private int id; //性别 private char sex; //年龄 private int age; ​ //get获得这个数据 public String getName() { return this.name; } ​ //set 给这个数据设置值 public void setName(String name) { this.name name; } ​ public int getId() { return id; } ​ public void setId(int id) { this.id id; } ​ public char getSex() { return sex; } ​ public void setSex(char sex) { this.sex sex; } ​ public int getAge() { return age; } ​ public void setAge(int age) { if (age 120 || age 0) { this.age 3; } else { this.age age; } } ​ public static void main(String[] args) { Student s1 new Student(); s1.setName(5780ysys); System.out.println(s1.getName()); ​ ​ s1.setId(123456); System.out.println(s1.getId()); ​ s1.setAge(422); System.out.println(s1.getAge()); ​ } }​2 继承CtrlH可以看到继承关系本质对某一批类的抽象JAVA中类只有单继承,没有多继承!继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。 继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。 子类和父类之间,从意义上讲应该具有is a的关系.package oop.Demo4; //继承 //Person 人:父类 //所有类都直接或间接继承Object类 public class Person { ​ //public //protected //default //private private int money10_0000_0000; ​ public void say(){ System.out.println(说话了); } ​ public int getMoney() { return money; } ​ public void setMoney(int money) { this.money money; } ​ } /*Application类里面 public static void main(String[] args) { Student student new Student(); student.say(); ​ System.out.println(student.getMoney()); }*/Super类注意Student类中要有形参String name才能使Application导入成功进阶版super注意点 1.super调用父类的构造方法必须在构造方法第一个 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造方法 VS this 代表的对象不同 this本身调用者这个对象 super代表父类对象的应用 前提 this没有继承也可以使用 super只能在继承条件才可以使用 构造方法 this本类的构造 super父类的构造父类package oop.Demo4; //封装 //Person 人:父类 //所有类都直接或间接继承Object类 public class Person { public Person() { System.out.println(Person实现了父类无参构造);; } ​ protected String namexiangnile; ​ public void print(){ System.out.println(Hello World); } }子类package oop.Demo4; ​ //学生 is 人派生类子类 //子类继承父类的全部方法 public class Student extends Person { private String namexihuanni; ​ public Student() { //隐藏代码调用了父类无参构造 //省略了super.person //注意如果父类直接有参则子类无法调用报错必须子类有super.person(里面为有参) System.out.println(Student实现了子类无参构造); } ​ public void print(){ System.out.println(Hello); } public void test1()/*记住要有形参才能使name可以导入值*/{ print(); this.print(); super.print(); } public void test(String name)/*记住要有形参才能使name可以导入值*/{ System.out.println(name);//喜欢你呀 System.out.println(this.name);//xihuanni System.out.println(super.name);//xiangnile } ​ }Applicationpackage oop; ​ import oop.Demo4.Student; ​ public class Application { public static void main(String[] args) { Student student new Student(); //student.test(喜欢你呀); // student.test1(); ​ ​ /* Person实现了父类无参构造 Student实现了子类无参构造 */ } ​ }方法重写没有static时b调用的是对象的方法而b是用A类new的有static时b调用了B类的方法因为b是用b类定义的因为静态方法是类的方法而非静态是对象的方法即b是A new出来的对象因此调用了A的方法非静态看new右边静态看new左边new 是造对象的不是调用方法的。静态方法不需要对象直接类名调用但类本身依然可以 new 出对象非静态方法用对象 → 看 new 右边多态静态方法用类 → 看声明左边无多态对象调用静态方法只是语法假象实际还是类在调用package oop; ​ import oop.Demo4.A; import oop.Demo4.B; import oop.Demo4.Student; ​ public class Application { public static void main(String[] args) { ​ A anew A(); a.test();//Atest() ​ B bnew A(); b.test();//Atest() ​ } ​ } //非静态的输出结果 //Atest() //Btest()3 多态◆即同一方法可以根据发送对象的不同而采用多种不同的行为方式。 ◆一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多◆多态存在的条件 ◆有继承关系 ◆子类重写父类方法 ◆父类引用指向子类对象◆注意:多态是方法的多态,属性没有多态性。 instanceof1.多态是方法的多态 2.父类和子类有联系 类型转换异常ClassCastException 3.存在条件继承关系方法需要重写父类指向子类对象 Father f1new son();1.static 方法属于类它不属于实例 ​ 2.final 常量 ​ 3.private 方法package oop.Demo5; public class Student extends Person { public void run(){ System.out.println(son); } public void eat(){ System.out.println(好吃); } } /* 1.多态是方法的多态 2.父类和子类有联系 类型转换异常ClassCastException 3.存在条件继承关系方法需要重写父类指向子类对象 Father f1new son(); 1.static 方法属于类它不属于实例 2.final 常量 3.private 方法 */ package oop.Demo5; public class Person { public void run(){ System.out.println(father); } }package oop.Demo5; public class Student extends Person { public void run(){ System.out.println(son); } public void eat(){ System.out.println(好吃); } } /* 1.多态是方法的多态 2.父类和子类有联系 类型转换异常ClassCastException 3.存在条件继承关系方法需要重写父类指向子类对象 Father f1new son(); 1.static 方法属于类它不属于实例 2.final 常量 3.private 方法 */package oop.Demo5; public class Student extends Person { public void run(){ System.out.println(son); } public void eat(){ System.out.println(好吃); } } /* 1.多态是方法的多态 2.父类和子类有联系 类型转换异常ClassCastException 3.存在条件继承关系方法需要重写父类指向子类对象 Father f1new son(); 1.static 方法属于类它不属于实例 2.final 常量 3.private 方法 */类型转换package oop; //类型转换 import oop.Demo5.Person; import oop.Demo5.Student1; import oop.Demo5.Teacher; public class Application { public static void main(String[] args) { Person student1 new Student1(); //student1.go(); //Person obj new Student1() //Student1 student1(Student1)obj; //((Student1)obj).go();强制转换 Person personstudent1; // person.go(); } }五 Static 静态类package oop.Demo6; public class Person { //2.赋初始值 { System.out.println(匿名代码块); } //1.只执行一次 static{ System.out.println(静态代码块); } //3 public Person(){ System.out.println(构造方法); } public static void main(String[] args) { Person person1 new Person(); System.out.println(); Person person2 new Person(); } } 静态代码块 匿名代码块 构造方法 匿名代码块 构造方法静态里面可以用静态不能用非静态可以用new去实例化非静态里面都可以package oop.Demo6; public class Student { private static int age;//静态变量 private double score; public void run(){ } public static void go(){ } public static void main(String[] args) { Student s1 new Student(); s1.run(); } }六 抽象类import oop.Demo5.Person; import oop.Demo5.Student1; import oop.Demo5.Teacher; import oop.Demo7.Action; public class Application { public static void main(String[] args) { //new Action()不能实例化 } } */ package oop.Demo7; //抽象类的所有方法继承了它的子类都必须实现他的方法除非子子类 public class A extends Action{ Override public void doSomething() { } }七 接口普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范!接口就是规范,定义的是一组规则,体现了现实世界中“如果你是 ... 则必须能 ... ”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。接口的本质是契约,就像我们人间的法律一样。package oop.Demo8; public interface TimeService { void timer(); } package oop.Demo8; //抽象的思维~ java 架构师 //interface 定义关键词, public interface UserServices { //接口中所有的定义都是抽象的 public abstract //常量~publicstatic final int AGE12; void add(String name); void delete(String name); void update(String name); void query(String name); }调用上面俩个package oop.Demo8; //抽象类 extends~ //类 可以实现接口 implements接口 //实现了接口的类就需要重写接口中的方法 //多继承利用接口多继承 //ctrlO重写 public class UserServiceImpl implements UserServices,TimeService{ Override public void add(String name) { } Override public void delete(String name) { } Override public void update(String name) { } Override public void query(String name) { } Override public void timer() { } }接口作用 1.约束 2.定义一些方法让不同的人实现 3.public abstract 4.public static final 5.implements可以实现多个接口 6.接口不能被实例化~接口中没有构造方法 7.必须重写接口中的方法 CtrlO八 内部类package oop.Demo9; public class Outer { private int id11; public void out(){ System.out.println(这是外部类方法); } public class Inner{ public void in(){ System.out.println(这是内部类方法); } //获得外部类私有属性 public void getID(){ System.out.println(id); } } } /* 调用输出 package oop; import oop.Demo9.Outer; public class Application { public static void main(String[] args) { //new Outer outer new Outer(); //通过这个外部类来实例化内部类 Outer.Inner inner outer.new Inner(); inner.getID(); } } */package oop.Demo9; public class Test { public static void main(String[] args) { //不用讲实例保存到对象里面 new methods().a(); new UserServices(){ Override public void hello() { } }; } } class methods{ public void a(){ System.out.println(apple); } } interface UserServices{ void hello(); }

相关文章:

Java面向对象

一 定义 面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据 三大特性:封装,继承,多态 二 类与对象的创建 new去实例化 package opp.Demo2; //学生类 public class Student {…...

用Python脚本解放双手:Epson V370扫描仪批量处理老照片实战(附完整代码)

用Python脚本解放双手:Epson V370扫描仪批量处理老照片实战(附完整代码) 在数字化浪潮席卷的今天,许多家庭相册里尘封的老照片正逐渐褪色发黄。我曾花费整整三个周末手动扫描祖父母留下的487张老照片,每次重复点击&quo…...

研一死磕大模型,预备进厂拧螺丝

总结一下最近的学习生活,一共三条支线:科研,大模型,刷题。 科研:目前的任务目标是写一篇综述,主要论述ai在某一领域的应用。虽然没跑实验,但是在论文写作上学到不少。一是明确了综述的写作顺序…...

Obsidian Style Settings 终极指南:无需代码即可自定义你的笔记界面

Obsidian Style Settings 终极指南:无需代码即可自定义你的笔记界面 【免费下载链接】obsidian-style-settings A dynamic user interface for adjusting theme, plugin, and snippet CSS variables within Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob…...

【LLM实时对话低延迟架构终极方案】:基于Swoole 5.x + Redis Stream + 自研Token流控的毫秒级响应体系(附GitHub开源项目链接)

更多请点击: https://intelliparadigm.com 第一章:LLM实时对话低延迟架构终极方案概览 构建毫秒级响应的LLM实时对话系统,核心在于解耦计算密集型推理与高并发网络交互,并通过分层缓存、动态批处理与硬件感知调度实现端到端延迟压…...

2026 年 Fedora Linux 44 发布:桌面与底层双升级,多版本选择满足多样需求

Fedora Linux 44:桌面环境与底层设施全面升级2026 年 4 月 28 日,Fedora 项目正式发布 Fedora Linux 44,为开发者钟爱的 Linux 发行版带来显著提升。在桌面环境上,Fedora Workstation 44 搭载最新 GNOME 50,在辅助功能…...

AI图像处理新范式:MCP协议与Photo AI Studio集成实战

1. 项目概述与核心价值 最近在折腾AI工作流的朋友,应该都听说过MCP(Model Context Protocol)这个新玩意儿。简单来说,它就像给你的AI助手(比如Claude、Cursor里的AI)装上了一套“瑞士军刀”,让…...

如何用 Python 快速接入 Taotoken 并调用多模型 API

如何用 Python 快速接入 Taotoken 并调用多模型 API 1. 准备工作 在开始编写代码之前,需要完成两项准备工作:获取 Taotoken API Key 和选择目标模型。登录 Taotoken 控制台后,在「API 密钥」页面可以创建新的密钥,建议为开发环境…...

Copilot 命令行使用方式介绍(npm)

1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级)&#xff1a…...

快捷支付|简化网银繁琐流程,支付高效便捷

无需开通网银、无需 U 盾,绑卡后短信验证即可付款,信息一次留存,后续凭验证码快速支付。全终端通用,操作简单门槛低,支付成功率高,PC 端、移动端均可流畅使用,几秒完成交易。开通仅需 2 分钟&am…...

taotoken 多模型聚合平台为 matlab 用户提供稳定 ai 算力支持

Taotoken 多模型聚合平台为 MATLAB 用户提供稳定 AI 算力支持 1. MATLAB 中的 AI 算力需求场景 在工程仿真优化与科学数据处理领域,MATLAB 用户常面临需要智能文本生成与代码解释的需求。典型场景包括自动生成仿真报告、解析复杂算法实现、辅助调试错误信息等。传…...

Blender Super IO插件:专业级3D资产复制粘贴工作流终极指南

Blender Super IO插件:专业级3D资产复制粘贴工作流终极指南 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io 在当今的3D创作流程中,资产的高效导入导出已成为提升…...

WebSite-Downloader:你的网站内容本地化解决方案

WebSite-Downloader:你的网站内容本地化解决方案 【免费下载链接】WebSite-Downloader 项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader 你是否曾经遇到过这样的情况:重要的在线文档突然无法访问,或是需要在网络不…...

双芯协同破局 AI 落地痛点 英特尔重新定义新一代 AI 工作站

4 月 23 日,英特尔在北京举办新一代 AI 工作站平台发布会,正式推出代号 Granite Rapid 的至强 600 系列工作站处理器、锐炫 Pro B70/B65 专业级 GPU 两大核心产品。在智能体应用全面爆发、AI 算力从云端向端侧深度下沉的行业拐点,英特尔以 “…...

使用Taotoken后API调用延迟与稳定性体感观察

使用Taotoken后API调用延迟与稳定性体感观察 1. 日常调用响应时间的主观感受 在实际开发过程中,通过Taotoken调用不同模型时,响应时间会因模型类型和任务复杂度而有所差异。以常见的文本补全任务为例,简单问答通常在几秒内返回结果&#xf…...

冲突解决:技术团队内部出现分歧时,如何推动共识?

在软件测试团队的日常协作中,因技术路线、测试方案、优先级排序等问题产生分歧,是再常见不过的场景。当不同成员各持己见,甚至陷入僵持时,不仅会拖慢项目进度,还可能影响团队氛围与成员间的信任。作为软件测试从业者&a…...

英国机器视觉协会主办会议,录用率31.9%!CCF推荐学术会议(C)截稿提醒

►►►BMVC 2026The British Machine Vision Conference (BMVC) is one of the major international conferences on computer vision and related areas. It is organised by the British Machine Vision Association (BMVA). The 37th BMVC will be an in-person event from …...

向上管理:测试从业者与技术管理者的同频共振之道

在软件研发的生态链中,测试团队是保障产品质量的关键防线,而技术经理或CTO则是把控技术方向、调配资源的核心枢纽。对测试从业者而言,能否与技术管理者同频共振,直接影响到测试工作的资源获取、目标对齐以及职业发展。然而&#x…...

大模型参数调优起始-AI调优与安全1

一、基础概念大模型参数调优(Fine-tuning),简单来说就是:在一个已经预训练好的通用大模型基础上,使用特定领域的小批量数据,对模型的部分或全部参数进行小幅调整,让模型适配特定任务或场景的过程…...

还在为图像中的数学公式和表格转换而烦恼吗?

还在为图像中的数学公式和表格转换而烦恼吗? 【免费下载链接】Pix2Text An Open-Source Python3 tool with SMALL models for recognizing layouts, tables, math formulas (LaTeX), and text in images, converting them into Markdown format. A free alternative…...

如何永久保存微信聊天记录:WeChatMsg完整备份与导出终极指南

如何永久保存微信聊天记录:WeChatMsg完整备份与导出终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

DLSS Swapper终极指南:快速解锁游戏图形性能的完整教程

DLSS Swapper终极指南:快速解锁游戏图形性能的完整教程 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾为游戏画面卡顿而烦恼?是否希望在不升级硬件的情况下获得更流畅的游戏体验&#…...

ncmdump:三步解锁网易云音乐格式限制的技术伙伴

ncmdump:三步解锁网易云音乐格式限制的技术伙伴 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你从网易云音乐下载了一首心仪的歌曲,却发现它被封装在.ncm格式中,只能在特定客户端播放时&#…...

为什么说OpenProject是中小团队最值得尝试的开源项目管理工具?

为什么说OpenProject是中小团队最值得尝试的开源项目管理工具? 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject 还在为高昂的SaaS项目管…...

新手必读:如何避开代理IP的“低价陷阱”与“雷区”

在跨境业务和数据服务中,代理ip已成为合法业务运营的常用工具。然而,市场上的ip质量参差不齐,低价技巧和隐藏陷阱屡见不鲜。我们应该如何选择合适的IP? 本篇文章,LokiProxy将结合行业常见现象与真实使用场景&#xff0…...

免费视频下载助手:5分钟学会网页视频保存技巧

免费视频下载助手:5分钟学会网页视频保存技巧 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网页视频而烦恼吗&am…...

终极AriaNg下载管理解决方案:为什么这款Web前端工具能改变你的下载体验 [特殊字符]

终极AriaNg下载管理解决方案:为什么这款Web前端工具能改变你的下载体验 🚀 【免费下载链接】AriaNg AriaNg, a modern web frontend making aria2 easier to use. 项目地址: https://gitcode.com/gh_mirrors/ar/AriaNg AriaNg是一款现代化的Web前…...

大模型困境:数据获取与整合的“抓瞎”困局,阻碍技术落地的核心瓶颈

目录 一、数据获取:“找不准、拿不到、不合规”,陷入三重困境 1.1 困境一:优质数据稀缺,“垃圾数据”泛滥成灾 1.2 困境二:合规壁垒高筑,数据获取“束手束脚” 1.3 困境三:数据孤岛凸显&…...

机器人焊接混合气智能节气装置

机器人焊接作业中,混合气凭借适配性强、保护效果稳定的优势,成为多数自动化焊接场景的首选保护介质,无论是碳钢、低合金钢的常规焊接,还是不锈钢、铝合金的精细加工,都离不开混合气的支撑。混合气多为氩气与二氧化碳、…...

OBS多平台直播插件:从零到一,掌握obs-multi-rtmp的完整使用指南

OBS多平台直播插件:从零到一,掌握obs-multi-rtmp的完整使用指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 在当今多平台直播时代,你是否还在为同…...