【JavaSE基础语法】06-类和对象
1. 面向对象的初步认识面向对象是解决问题的一种思想主要依靠对象之间的交互完成一件事情2. 类的定义和使用类是用来对一个实体对象进行描述的。在Java中定义类需要使用class关键字classClassName{field;//字段属性或者 成员变量method;//行为 或者 成员方法}【注意】一般一个文件中只定义一个类main方法所在的类一般要使用public修饰public修饰的类必须要和文件名相同3. 类的实例化定义了一个类就相当于在计算机中定义了一种新的类型。用类类型创建对象的过程成为类的实例化。【注意】new关键字用于创建一个对象的实例使用.来访问对象中的属性方法同一个类可以创建多个实例对象4. this引用4.1 为什么要有this引用publicclassDate{publicintyear;publicintmonth;publicintday;publicvoidsetDay(inty,intm,intd){yeary;monthm;dayd;}publicvoidprintDate(){System.out.println(year/month/day);}publicstaticvoidmain(String[]args){// 构造三个日期类型的对象 d1 d2 d3Dated1newDate();Dated2newDate();Dated3newDate();// 对 d1d2d3 的日期设置d1.setDay(2020,9,15);d2.setDay(2020,9,16);d3.setDay(2020,9,17);// 打印日期中的内容d1.printDate();d2.printDate();d3.printDate();}}以上代码定义了一个日期类随后main方法中创建了三个对象并通过Date类中的成员方法对对象进行设置和打印。但是细思之下有两个疑问1.形参名不小心与成员变量名相同publicvoidsetDay(intyear,intmonth,intday){yearyear;monthmonth;dayday;}那函数体中到底是谁给谁赋值?成员变量给成员变量?参数给参数?参数给成员变量?成员变量参数?2.三个对象都在调用setDate和printDate函数但是这两个函数中没有任何有关对象的说明setDate和printDate函数如何知道打印的是那个对象的数据呢?4.2 什么是this引用this引用指向当前对象成员方法运行时调用改成员方法的对象在成员方法中所有成员变量的操作都是通过该引用去访问publicclassDate{publicintyear;publicintmonth;publicintday;publicvoidsetDay(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}publicvoidprintDate(){System.out.println(this.year/this.month/this.day);}}【注意】this引用的是调用成员方法的对象publicstaticvoidmain(String[]args){DatednewDate();d.setDay(2020,9,15);d.printDate();}4.3 this引用的特性this的类型对应类类型引用即哪个对象调用就是哪个对象的引用类型this只能在“成员方法”中使用在“成员方法”中this只能引用当前对象不能再引用其他对象this是“成员方法”第一个隐藏的参数编译器会自动传递在成员方法执行时编译器会负责将调用成员方法对象的引用传递给该成员方法this负责来接收5. 对象的构造5.1 构造方法5.1.1 概念构造方法是一个特殊的成员方法名字必须与类名相同在创建对象时由编译器自动调用并且在整个对象的生命周期内只调用一次。publicclassDate{publicintyear;publicintmonth;publicintday;// 构造方法// 名字与类名相同没有返回值类型设置为 void 也不行// 一般情况下使用 public 修饰// 在创建对象时由编译器自动调用并且在对象的生命周期内只调用一次publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;System.out.println(Date(int,int,int)方法被调用了);}publicvoidprintDate(){System.out.println(year-month-day);}publicstaticvoidmain(String[]args){// 此处创建了一个 Date 类型的对象并没有显式调用构造方法DatednewDate(2021,6,9);// 输出 Date(int,int,int)方法被调用了d.printDate();// 2021-6-9}}【注意】构造方法的作用就是对对象中的成员进行初始化并不负责给对象开辟空间5.2.2 特性名字必须与类名相同没有返回值创建对象时由编译器自动调用并且在对象的生命周期内只调用一次构造方法可以重载publicclassDate{publicintyear;publicintmonth;publicintday;// 无参构造方法publicDate(){this.year1900;this.month1;this.day1;}// 带有三个参数的构造方法publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}publicvoidprintDate(){System.out.println(year-month-day);}publicstaticvoidmain(String[]args){DatednewDate();d.printDate();}}如果用户没有定义构造方法编译器会生成一份默认的构造方法生成的默认构造方法一定是无参的publicclassDate{publicintyear;publicintmonth;publicintday;// 无参构造方法publicDate(){this.year1900;this.month1;this.day1;}// 带有三个参数的构造方法publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}publicvoidprintDate(){System.out.println(year-month-day);}publicstaticvoidmain(String[]args){DatednewDate();d.printDate();}}publicclassDate{publicintyear;publicintmonth;publicintday;publicvoidprintDate(){System.out.println(year-month-day);}publicstaticvoidmain(String[]args){DatednewDate();d.printDate();}}【注意】用户一旦定义了构造方法编译器则不再生成6. 构造方法中可以通过this调用其他构造方法来简化代码publicclassDate{publicintyear;publicintmonth;publicintday;//无参构造方法--内部给各个成员赋初始值该部分功能与三个参数的构造方法重复//此处可以在无参构造方法中通过this调用三个参数的构造方法//但是this(1900,1,1)必须是构造方法的第一条语句publicDate{this(1900,1,1);}//带有三个参数的构造方法publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}}【注意】this(...)必须是构造方法的第一条语句不能形成环6.封装面向对象的三大特征封装、继承、多态6.1封装的概念封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节进队外公开接口和对象进行交互6.2 访问限定符访问权限用来控制方法活字段能否直接在类外使用【说明】default什么都不写时的默认权限访问权限除了可以限定类中成员的可见性也可以控制类的可见性publicclassComputer{privateStringcpu;// cpuprivateStringmemory;// 内存publicStringscreen;// 屏幕Stringbrand;// 品牌---default属性publicComputer(Stringbrand,Stringcpu,Stringmemory,Stringscreen){this.brandbrand;this.cpucpu;this.memorymemory;this.screenscreen;}publicvoidBoot(){System.out.println(开机~~~);}publicvoidPowerOff(){System.out.println(关机~~~);}publicvoidSurflnternet(){System.out.println(上网~~~);}}publicclassTestComputer{publicstaticvoidmain(String[]args){ComputerpnewComputer(HW,i7,8G,13*14);System.out.println(p.brand);// default属性: 只能被本包中类访问System.out.println(p.screen);// public属性: 可以任何其他类访问//System.out.println(p.cpu); // private属性: 只能在Computer类中访问,不能被其他类访问}}【注意】一般情况下成员变量设置为private成员方法设置为public7. static成员7.1 static修饰成员变量在Java中被static修饰的成员称之为静态成员也可以称为类成员【静态成员变量的特性】不属于某个具体的对象是类的属性是所有对象所共享的既可以通过对象访问也可以通过类名访问类变量存储在方法区当中生命周期伴随类的一生随类的加载而加载随类的卸载而卸载7.2 static修饰成员方法在Java中被static修饰的成员方法成为静态方法是类的方法不是某个对象所持有的。静态成员一般通过静态方法来访问publicclassStudent{//...privatestaticStringclassRoom2043;//...privatestaticStringgetClassRoom(){returnclassRoom;}}publicclassTestStudent{publicstaticvoidmain(String[]args){System.out.println(Student.getClassRoom());}}//输出2043【静态方法特性】不属于某个具体的对象是类方法可以通过对象调用也可以通过类名.方法名(...)方式调用推荐使用后者不能在静态方法中访问任何非静态成员变量publicstaticStringgetClassRoom(){System.out.println(this);returnclassRoom;}// 编译失败Error:(35, 28) java: 无法从静态上下文中引用非静态变量 thispublicstaticStringgetClassRoom(){age1;returnclassRoom;}// 编译失败Error:(35, 9) java: 无法从静态上下文中引用非静态变量 age静态方法中不能调用任何非静态方法因为非静态方法由this参数在静态方法中调用不能传递this引用publicstaticStringgetClassRoom(){doClass();returnclassRoom;}// 编译报错Error:(35, 9) java: 无法从静态上下文中引用非静态方法 doClass()

相关新闻

等待唤醒案例分析(线程之间的通信)

等待唤醒案例分析(线程之间的通信)

方法说明void wait()线程等待,等待的过程中线程会释放锁,需要被其他线程调用notify方法将其唤醒,重新抢锁执行,但是并不会重新执行全部代码void notify()线程唤醒,一次唤醒一个等待线程;如果有多条线程等待,则随机唤醒一条等待线程void notifyAll()唤醒所有等待线程…

2026/6/30 5:58:25阅读更多 →
2007-2024年上市公司人工智能投资水平数据+stata代码

2007-2024年上市公司人工智能投资水平数据+stata代码

本数据参考李果(2024)对企业人工智能投资水平指标的衡量和测算的方法,团队依据上市公司财务报告附注信息,采用关键词筛选法,整理形成人工智能投资水平数据整理说明:1.人工智能无形资产投资金额:…

2026/6/30 5:58:25阅读更多 →
青年 | 当代年轻人的「主体性觉醒」,需要一台懂自己的笔记本电脑

青年 | 当代年轻人的「主体性觉醒」,需要一台懂自己的笔记本电脑

你的节奏,何必迁就工具选笔记本这件事,说到底是在选一种相处方式——它能不能跟上你的思路,能不能接住你的习惯,都非常重要。今天小A为大家种草的这台华硕无畏Pro14 2026,或许就是一个把「你怎么用」放在第一位的选择。…

2026/6/30 5:58:25阅读更多 →
Claude Code Loop 快速入门:从一行命令到自动迭代

Claude Code Loop 快速入门:从一行命令到自动迭代

JeecgBoot AI专题研究 | Claude Code 自动迭代 Loop 模式从零上手实战指南一、Loop 到底解决什么问题? 用 Claude Code 写代码,你大概率遇到过这个场景: 把需求丢给它 → 它忙活一阵 → 输出一堆代码 → 停了。 测试没过?它把报错…

2026/6/30 7:03:29阅读更多 →
MuleSoft+LLM企业级AI编排:打破数据、权限与流程断层

MuleSoft+LLM企业级AI编排:打破数据、权限与流程断层

1. 项目概述:当企业级集成平台遇上大语言模型,不是拼接,而是重定义工作流“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题里藏着一个正在发生的、静默却剧烈的范式转移。它说的不是“用…

2026/6/30 7:03:29阅读更多 →
《Python编程 从入门到实践》第6章:字典创建、遍历与嵌套用法详解

《Python编程 从入门到实践》第6章:字典创建、遍历与嵌套用法详解

开篇:这篇解决什么问题列表适合存“一组同类数据”,比如一批任务名、一组文件名、一串用户名称。但如果我要描述一个用户,只写成列表就不太直观:user [lunzi, active, 7]这段代码能跑,但过几天再看,很容易…

2026/6/30 7:03:29阅读更多 →
【数据结构】排序算法(四):归并排序、计数排序与基数排序——突破 O(n log n) 的底层密码

【数据结构】排序算法(四):归并排序、计数排序与基数排序——突破 O(n log n) 的底层密码

目录一、 归并排序 (Merge Sort)1.1 算法思想1.2 代码实现1.3 运行推演1.4 复杂度分析二、 计数排序 (Counting Sort)2.1 算法思想2.2 具体步骤推演2.3 复杂度分析三、 基数排序 (Radix Sort)3.1 算法思想3.2 LSD 基数排序步骤推演(以十进制为例)3.3 复杂…

2026/6/30 7:03:29阅读更多 →
如何快速重置Cursor免费试用:3步解决请求限制的完整指南

如何快速重置Cursor免费试用:3步解决请求限制的完整指南

如何快速重置Cursor免费试用:3步解决请求限制的完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit…

2026/6/30 7:03:29阅读更多 →
【2024最新版】ChatGPT API接入避雷图谱:v1/chat/completions接口的12个隐性坑位与官方文档未标注的兼容性断点

【2024最新版】ChatGPT API接入避雷图谱:v1/chat/completions接口的12个隐性坑位与官方文档未标注的兼容性断点

更多请点击: https://codechina.net 第一章:ChatGPT API 接入指南 接入 ChatGPT API 是构建智能对话能力的基础环节,需完成身份认证、请求构造与响应解析三个核心步骤。OpenAI 官方提供 RESTful 接口,支持多种编程语言调用&#…

2026/6/30 6:58:28阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode…

2026/6/30 0:02:58阅读更多 →
第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

1. PowerPoint 2010基础操作全攻略 刚接触PowerPoint 2010时,很多人会被它复杂的界面吓到。其实只要掌握几个核心区域,就能快速上手。我最开始用PPT时,经常找不到功能按钮在哪,后来发现主要操作都集中在顶部功能区。 工作窗口主要…

2026/6/30 0:02:58阅读更多 →
XGBoost超参数实战:从理论到调优策略

XGBoost超参数实战:从理论到调优策略

1. XGBoost超参数基础认知 第一次接触XGBoost时,我被它那密密麻麻的参数列表吓到了。这感觉就像面对一架波音747的驾驶舱——每个按钮都可能有神奇的效果,但按错了就可能坠机。经过多年实战,我发现其实掌握十几个核心参数就能解决90%的问题。…

2026/6/30 0:02:59阅读更多 →