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

java知识四(面向对象编程)

对象是一种特殊的数据结构,可以用来记住一个事物的数据,从而代表该事务

第一章 面向对象编程快速入门

① 先设计对象的模板,也就是对象的设计图:类。
② 通过new关键字,每new一次类就得到一个新的对象

packagecom.kgl.object;publicclassStar{Stringname;intage;doubleheight;doubleweight;}
packagecom.kgl.object;publicclassTest{publicstaticvoidmain(String[]args){Starstar=newStar();star.name="张三";star.age=18;star.weight=50.0;star.height=178.0;Starstar1=newStar();star1.name="李四";star1.age=18;star1.weight=50.0;star1.height=168.0;}}

1.1 对象
对象本质上是一种特殊的数据结构(可以理解为一张表),对象是用类new出来的,有了类就可以创建出对象。

publicclass类名{// 1、变量,用来说明对象可以处理什么数据// 2、方法,描述对象有什么功能,也就是可以对数据进行什么样的处理...}

语法格式:类名 对象名 = new 类名();
万物皆对象,谁的数据谁存储。

第二章 构造器

publicclassStudent{/** 构造器 */publicStudent(){...}}

2.1 构造器
构造器是一种特殊方法,不能写返回值类型,名称必须是类名。
创建对象时,对象会立即自动调用构造器执行

Students=newStudent();

2.2构造器的常见应用场景
构造器常用于完成对象初始化,创建对象时,同时完成对对象成员变量(属性)的初始化赋值。
2.3构造器的注意事项
类默认就自带了一个无参构造器
如果为类定义了有参数构造器,类默认的无参数构造器就没有了,此时如果还想用无参数构造器,就必须自己手写一个无参数构造器出来。

第三章 this 关键字

是一个变量,可以用在方法中,来拿到当前对象。哪个对象调用这个方法,this就拿到哪个对象。
主要用来解决:对象的成员变量与方法内部变量的名称一样时,导致访问冲突问题

publicclassStudent{Stringname;doublescore;publicvoidprint(){System.out.println(name);System.out.println(this);}publicvoidprintHobby(Stringname){System.out.println(this.name+"喜欢"+name);}publicvoidcheckPass(doublescore){if(this.score>=score){System.out.println("恭喜您,考上哈佛,走向巅峰~~~");}else{System.out.println("不好意思,您没有考上~~~");}}}
publicclassTest{publicstaticvoidmain(String[]args){Students1=newStudent();s1.name="张三";s1.print();System.out.println(s1);System.out.println("-----------------------------------");Students2=newStudent();s2.print();System.out.println(s2);System.out.println("-----------------------------------");Students3=newStudent();s3.name="李四";s3.printHobby("读书");System.out.println("-----------------------------------");s3.score=80;s3.checkPass(90);}}

输出

张三com.kgl.thisdemo.Student@3b07d329com.kgl.thisdemo.Student@3b07d329-----------------------------------nullcom.kgl.thisdemo.Student@41629346com.kgl.thisdemo.Student@41629346-----------------------------------李四喜欢读书-----------------------------------不好意思,您没有考上~~~

第四章 封装

面向对象的三大特征:封装、继承、多态。
定义:就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。
4.1 封装的设计规范
合理隐藏:使用private关键字(私有,隐藏)修饰成员变量,就只能在本类中被直接访问,其他任何地方不能直接访问。
合理暴露:使用public修饰(公开)的get和set方法合理暴露,成员变量的取值和赋值。
4.2 代码层面控对象的成员公开或隐藏
公开成员:可以使用public(公开)进行修饰。
隐藏成员:使用private(私有,隐藏)进行修饰。

publicclassStudent{Stringname;privateintage;privatedoublechinese;privatedoublemath;publicvoidsetAge(intage){if(age<0||age>100){System.out.println("输入的年龄有误");return;}this.age=age;}publicintgetAge(){returnage;}}
publicclassTest{publicstaticvoidmain(String[]args){Students1=newStudent();s1.setAge(-15);System.out.println(s1.getAge());}}

第五章 实体类 Javabean

5.1 定义
是一种特殊类,类中要满足如下需求:
要求 1:类中的成员变量全部私有,并提供public修饰的getter/setter方法。在IDEA中可以通过右键菜单->Generate->Getter and Setter快速生成。
要求 2:提供get、set 方法,类中需要提供一个无参数构造器,有参数构造器可选。 在IDEA中可以通过右键菜单->Generate->constructor->select None/ok快速生成。
5.2 实体类应用场景
核实体类的对象只负责数据存取,而对数据的业务处理交给其他类的对象来完成,以实现数据和数据业务处理相分离。
用来保存数据的java类,可以用它创建对象,保存某个事物的数据。

// 实体类:Student (只负责存数据)publicclassStudent{privateStringname;privatedoublescore;// getter setter 方法...// 生成Getter/Setter:在IDEA中可以通过右键菜单->Generate->Getter and Setter快速生成。}
// 业务类:StudentOperator (负责处理逻辑)publicclassStudentOperator{privateStudents;publicStudentOperator(Students){this.Student=s;}// 打印总成绩// 打印平均成绩// ...}

5.3 实操
5.3.1 定义实体类

packagecom.kgl.Javabean;publicclassStudent{privateStringname;privatedoublechinese;privatedoublemath;publicvoidsetName(Stringname){this.name=name;}publicvoidsetChinese(doublechinese){this.chinese=chinese;}publicvoidsetMath(doublemath){this.math=math;}publicStringgetName(){returnname;}publicdoublegetChinese(){returnchinese;}publicdoublegetMath(){returnmath;}publicStudent(){}publicStudent(Stringname,doublechinese,doublemath){this.name=name;this.chinese=chinese;this.math=math;}}

5.3.2 业务类

packagecom.kgl.Javabean;publicclassStudebtOperator{privateStudents;publicStudebtOperator(Students){this.s=s;}publicvoidprinttotalScore(){System.out.println(s.getName()+"的语文成绩是"+s.getChinese()+",数学成绩是"+s.getMath());}publicvoidprintavgScore(){System.out.println(s.getName()+"的总成绩是"+(s.getChinese()+s.getMath())+",平均成绩是"+(s.getChinese()+s.getMath())/2);}}

5.3.3 调用

packagecom.kgl.Javabean;publicclassTest{publicstaticvoidmain(String[]args){Students1=newStudent();s1.setName("播妞");s1.setChinese(80.0);s1.setMath(90.0);System.out.println(s1.getName()+"的语文成绩是"+s1.getChinese()+",数学成绩是"+s1.getMath());System.out.println("-------------------------------------------");Students2=newStudent("播仔",90.0,80.0);StudebtOperatoroperator=newStudebtOperator(s2);operator.printtotalScore();operator.printavgScore();}}

第六章 static关键字

6.1 定义
叫静态,可以修饰成员变量、成员方法。
成员变量按照有无static修饰,分为两种:
6.1.1 静态变量(类变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享。
6.1.2 实例变量(对象的变量):无static修饰,属于每个对象的。

publicclassStudent{// 静态变量staticStringname;// 实例变量(对象的变量)intage;}

Student学生表中包含static name和age字段。
s1对象和s2对象各自拥有独立的age值(均为0),但共享同一个name字段。
推荐访问方式:类名.静态变量;不推荐:对象.静态变量。
实例变量只能通过 对象.实例变量 访问。
6.2 static修饰成员变量 — 成员变量的执行原理

publicclassStudent{// 类变量 静态变量:有static修饰,属于类,只加载一份,可以被类和类的全部对象共享staticStringname;// 实例变量(对象变量) 没有static修饰,属于对象,每个对象都有一份intage;}
publicclassTest{publicstaticvoidmain(String[]args){// 1、类变量的用法// 类名.静态变量(推荐)Student.name="袁华";// 对象.静态变量(不推荐)Students1=newStudent();s1.name="马冬梅";Students2=newStudent();s2.name="秋雅";System.out.println(s1.name);// 秋雅System.out.println(Student.name);// 秋雅// 2、实例变量的用法// 对象.实例变量s1.age=23;s2.age=18;System.out.println(s1.age);// 23// System.out.println(Student.age); // 报错}}

第七章 静态方法

如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成静态变量来记住。
同一个类中访问静态成员可以省略类名不写,在某个类中访问其他类里的类变量,必须带类名访问
7.1 static修饰方法
成员方法的分类
7.1.1 静态方法:有 static 修饰的成员方法,属于类。可以直接用类名访问,也可以用对象访问

publicstaticvoidprintHelloWorld(){System.out.println("Hello World!");System.out.println("Hello World!");}

7.1.1.1 调用方式:
类名.静态方法 (推荐)
对象名.静态方法 (不推荐)
7.1.1.2 案例
系统启动后,要求用户类可以记住自己创建了多少个用户对象了。

publicclassUser{// 静态变量publicstaticintnumber;// 构造器publicUser(){User.number++;//注意:同一个类中访问静态成员可以省略类名不写number++;System.out.println("创建了一个对象,当前对象数量为:"+number);}}
publicclassTest2{publicstaticvoidmain(String[]args){// 目标:了解静态变量的应用。newUser();newUser();newUser();System.out.println(User.number);}}

7.1.2 实例方法:无 static 修饰的成员方法,属于对象。只能用对象访问

publicvoidprintPass(){...}

调用方式:对象.实例方法

如果方法只是为了做一个功能且不需要直接访问对象的数据,这个方法直接定义成静态方法
如果这个方法是对象的行为,需要访问对象的数据,这个方法必须定义成实例方法

publicclassStudent{privatedoublescore;publicvoidprintpass(){System.out.println(score>60?"通过":"未通过");}publicstaticvoidprint(){System.out.println("hello world");}publicvoidsetScore(doublescore){this.score=score;}}
publicclassTest{publicstaticvoidmain(String[]args){Student.print();//hello world// Student.printpass();Students1=newStudent();s1.print();//hello worlds1.setScore(80.0);s1.printpass();//通过printhello();//hello world1Test.printhello();//hello world1}publicstaticvoidprinthello(){System.out.println("hello world1");}}

7.2 main方法

publicclassTest{publicstaticvoidmain(String[]args){...}}

属于类方法,实际执行是 java Test ----> Test.main(…),调用了方法。见上代码Test.printhello();//hello world1

http://www.jsqmd.com/news/973466/

相关文章:

  • 字符串与链表刷题集(5.30-6.6)
  • 科研信息流操作系统:arXiv自动化+结构化笔记+知识图谱闭环
  • 新能源车企的整车故障排查标准(15):故障诊断综合案例与思维训练
  • 2026年镇江CPPM课程班期费用怎么核对?众智商学院官网400冯老师资料咨询 - 众智商学院职业教育
  • 第32章:AI辅助去中心化身份(DID)——链上可验证凭证
  • 豆包 LeetCode 3082. 求出所有子序列的能量和 Java实现
  • 3分钟掌握百度网盘直链解析:告别限速的完整指南
  • 手把手教你排查华为桌面云FusionAccess用户登录失败问题(附详细日志分析)
  • 终极游戏语言障碍终结者:XUnity.AutoTranslator完整指南
  • 【Redis分布式缓存实战】第18章 Redis全方位性能调优
  • 第33章:AI辅助SocialFi开发——Lens协议集成
  • IDEA + Maven Assembly Plugin:一条命令打包含所有依赖的JavaFX Jar,再用exe4j生成轻量exe
  • 广元母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • 赣州母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • PHP代码迁移与版本升级指南
  • 可形变模型原理与实战:从PCA降维到足部三维参数化建模
  • 手把手教你用RT-Thread点亮CH32V307开发板的LED,并搞定串口打印(附完整工程)
  • B站光科教程之外:Light Tools新手快速上手的5个隐藏技巧和界面冷知识
  • 别再只测平面了!手把手教你用Apriltag和Homography矩阵实现3D姿态解算
  • PID无线调参进阶:基于HC-05蓝牙和SerialPlot,打造你的移动调试工作站
  • 拒绝暴力洗稿!2026年实测横评10款免费降AI工具:搞定去AIGC痕迹与学术表达双标准 - 降AI实验室
  • 富阳母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • AI生成excel表格“AI导出鸭”:结构化数据流转的深度测评与工程实证
  • 2026年众智商学院PMP班期确认加微信怎么问?官网400冯老师考前冲刺咨询 - 众智商学院职业教育
  • RAGFlow 使用指南:从部署到构建 AI 知识库
  • 第35章:AI辅助开发者工具——自动生成ABI文档与TypeScript类型
  • Android启动安全实战:手把手教你用avbtool给dtbo.img镜像签名(附完整命令)
  • 2026电脑显示器选购:高端方案解析与避坑指南 - 服务品牌热点
  • 阜新母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • 深度解锁NVIDIA显卡潜能:Profile Inspector完全使用手册