版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京传智播客教育Java预热班讲义讲师:焦宁波北京传智播客教育面向对象OOP(核心)面向对象概念类与对象的关系封装构造函数this关键字static关键字单例设计模式北京传智播客教育Tip1:面向对象概念理解面向对象面向对象是一种考虑问题的思想面向对象是相对于面向过程而言面向过程VS面向对象面向过程强调的是功能行为面向对象强调的是封装了功能的对象面向对象是基于面向过程的举例:使用冰箱存储大象、窗口操作打开冰箱门存储大象关闭冰箱门冰箱存储关闭打开北京传智播客教育Tip1:面向对象概念生活小案例买电脑(执行者指挥者)学习(执行者指挥者)总结面向对象是一种思想面向对象是基于面向过程的面向对象使得我们的角色发生变化(执行者指挥者)面向对象使得事情变得简单“万物皆对象”编程的核心思想:“找合适的对象,实现所需的功能”。北京传智播客教育Tip1:面向对象概念事物的认识先具体再抽象(人类)先抽象再具体(java语言)面向对象的特征封装继承多态北京传智播客教育Tip2:类与对象之间的关系类:是对现实生活某一类事物的描述。对象:既是该类事物的实实在在存在的个体。举例:
---------------------------生活中----------------------------生活中的个体:张三、李四(对象)对个体的描述:提取个体的共性即抽象事物
传智播客学员、人--------------------------------Java中-----------------------------------
对一类事物的描述,即使用class关键字定义类个体:使用new关键字在堆内存中创建的实例北京传智播客教育Tip2:类与对象之间的关系图解:理解:类就是汽车宝马、奥迪..都是内存中汽车的对象汽车奔驰宝马奥迪雷克萨斯北京传智播客教育Tip3:类的定义(描述事物)类的定义主要有两点:属性(静态)变量行为(动态)函数举例:classCar{//描述颜色Stringcolor=“red”;//描述名称Stringname=“奔驰”;//描述轮胎intnum=4;//描述功能voidrun(){System.out.println(name+”在跑……”);}}成员北京传智播客教育Tip4:对象的定义与使用格式:类名变量名=new
类名();举例:Carc=newCar();对象操作:通过“对象名.对象成员”的方式来操作对象中的内容对象的特点:封装数据 思考:对象在内存中是如何存在?堆内存初始化值地址北京传智播客教育Tip4:对象的定义与使用总结:main方法在本类中创建本类对象变量定义成员变量局部变量成员变量VS
局部变量作用范围内存存储成员变量有默认值,局部变量使用前必须初始化北京传智播客教育练习:使用OOP的思想写一个类用于打印各种几何图形使用OOP的思想写程序装大象使用OOP的思想写程序修车(引入匿名对象)北京传智播客教育Tip5:匿名对象(Anonymity)匿名:没有名称。如:匿名信匿名对象:
创建对象时不用起一个名称,是创建对象的一种简写形式。应用场景:对对象的方法只使用(调用)一次作为实际参数(实参)传递举例、图解:案例、图解:
定义汽车改装厂,主要功能是改装汽车,改装后返回。newCar().color=“blue”;newCar().name=“宝马”;newCar().run();北京传智播客教育Tip6:封装(Encapsulation)封装:隐藏对象的属性和功能的实现细节,只对外提供公共的访问方式好处:将变化隔离便于使用提高重用性提高安全性封装的原则:将不需要对外提供的内容封装起来把属性都对外隐藏,提供公共方法对其访问北京传智播客教育Tip6:封装(Encapsulation)应用:Person类
classPerson{intage;//privateintage;voidspeak(){System.out.println(“age=”+age);}}publicclassDemo{publicstaticvoidmain(String[]args){Personp=newPerson();p.age=23;//p.age=-20;p.speak();}}北京传智播客教育练习描述计算机类。描述计算器类。模拟学生立场类(计算器Calculator)描述整个公司的工作状况(主要描述公司的人)。清洁工、员工、经理、董事长描述三皇五帝。描述空调。北京传智播客教育Tip7:构造函数(Constructor)特点:函数名和类名相同不用定义函数的返回值类型不可以写return语句作用:给对象进行初始化举例:
Person(){System.out.println(“person”);}注意:默认无参构造器多构造器以重载形式出现开发者自定义了构造函数,那默认的构造函数也要显示定义构造函数调用使用new、this、super注意:使用this和super调用构造函数的时候不需要使用构造函数的名称,直接使用this(参数列表)或super(参数列表)即可。北京传智播客教育Tip7:构造函数(constructor)构造函数VS
普通函数写法不同运行不同构造函数在对象创建时运行普通函数在对象创建后调用后运行执行次数不同构造函数在创建对象时只执行一次普通函数在对象创建后可以调用多次构造函数应用在描述事物时,如果事物一存在就具备某种属性或行为,那么就可以将该属性或行为定义在构造函数中。北京传智播客教育Tip8:构造代码块代码块 使用{}包围起来的一些简单的java语句。分类局部代码块(在函数中)构造代码块(在类中)作用局部代码块 定义变量的使用范围,按顺序执行构造代码块 给对象初始化,对象被创建的时候执行,优先于构造函数执行注意局部代码块按顺序执行,定义变量不能冲突,可以相互嵌套构造代码块优于构造函数执行,可以嵌套,对所有的对象进行初始化北京传智播客教育Tip8:构造代码块构造代码块VS
构造函数构造代码块是给所有对象进行统一初始化构造函数是给对应的对象进行初始化北京传智播客教育Tip9:this关键字作用:用于解决局部变量和成员变量的重名问题特点:this代表其所在函数所属对象的引用换言之:哪个对象调用this所在的函数,this就代表哪个对象应用:函数内需要用到调用该对象的函数时,就用this可以使用this调用其他的构造函数(提高代码的复用性)注意:this调用其他构造函数,但是只能放在构造函数第一行构造函数中只能调用一次其他构造函数使用this在不同构造函数中如果相互调用,那么导致无限循环北京传智播客教育Tip9:this关键字练习:给Person类上定义一个判断同龄人的功能。publicbooleancompare(Personp){if(this.age==p.age){returntrue;}else{returnfalse;}}publicbooleancompare(Personp){returnthis.age==p.age;}}北京传智播客教育Tip10:static(静态)关键字static
主要用来修饰类的成员,包含成员变量和成员函数
使用细节:static不能修饰函数的局部变量被修饰的成员具备以下特点被所有对象所共享随着类的加载而加载优先于对象而存在可以直接使用类名调用类变量(静态变量)VS实例变量存放位置(方法区)生命周期注意存储在内存中的方法区(共享区|数据区)静态方法只能访问静态成员静态方法中不可以写this,super等关键字主函数是静态的publicstaticvoidmain(String[]args){ staticintx=2; System.out.println(x);}//static不能修饰局部变量!北京传智播客教育Tip10:static(静态)关键字总结优点是实现数据共享,提高代码复用,直接使用类名调用缺点是生命周过长,访问出现局限性(只能访问静态成员)“静态虽好,但请慎用!!”练习定义一个Person类,具有统计人数的功能。自己总结静态函数北京传智播客教育Tip11:static应用场景static变量当对象中需要共享数据时,定义为static。当对象中有特有的数据时,定义非static。static函数当该函数中不需要访问非静态成员时,定义为static当该函数中需要访问非静态成员时,定义为非staticstatic块格式:static{}进行类初始化(分析备注代码)练习定义一个工具类,提供打印JVM传递参数的功能。北京传智播客教育Extend:main函数主函数一个特殊的函数,程序执行的入口,可以被JVM调用解说public:该函数的访问权限最大static:该函数类加载时存在void:没有具体的返回值main:不是关键字,但是很特殊,JVM识别。可以重载。String[]:参与运算的未知内容分析JVM调用main函数时传递的实际参数(直接打印数组名)数组的长度(打印数组长度)args[0]Usage:java[-options]class[args...]main之间的相互调用JVM默认调用的时候传递的是一个长度为0的String[0]思考:在命令行输入参数“*”并打印出来。北京传智播客教育学生疑问在main函数中如何将*当作参数输入?静态代码块和构造代码块执行次数?在类中直接书写显示初始化语句?修饰函数的时候什么时候使用static关键字?当该函数中不需要访问非静态成员时,定义为static当该函数中需要访问非静态成员时,定义为非static北京传智播客教育Extend:javadoc引题编写一个对于数组操作的工具类(遍历、数据交换、反序)javadoc主要用于生成类的帮助文档场景将上面的工具的class文件发给其他开发人员使用常见注解@author作者名@version版本@param参数极其意义@return返回值@exception异常声明@since最早使用版本使用用法:javadoc[选项][软件包名称][源文件][@file]/**类的描述信息*//**方法的描述类信息*/查看javadoc的使用方式:javadoc–d目录-version-authorXX.java只提取public和protected修饰的类和成员参考:查看Oracle提供的JavaSE的帮助文档API。北京传智播客教育思考为什么在定义类的时候不能直接在类中编写变量的显示初始化语句,或打印语句?北京传智播客教育Tip12:java对象的初始化过程Personp=newPerson();在栈中开辟空间p。通过类装载器装载class文件。执行类中静态代码块。在堆内存中开辟空间,分配内存地址。执行成员默认初始化。(默认初始化)执行成员的显示初始化。(inta=23)执行构造代码块。执行构造函数初始化。将堆内存中的地址赋值给p北京传智播客教育Tip13:java对象的调用过程p.setName(“lisi”);图解classPerson{privateStringname;privateintage;privatestaticStringcountry=“cn”;Person(Stringname,intage){=name;this.age=age;}publicvoidsetName(Stringname){=name;}publicstaticvoidshowCountry(){System.out.println(country);}}北京传智播客教育Extend:设计模式之单例模式设计模式设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。GoF设计模式四人组(“四人帮”,又称GangofFour,即ErichGamma,RichardHelm,RalphJohnson&JohnVlissides四人)的《设计模式》,原名《Design
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年全球及中国陆上水产养殖生物过滤器行业发展前景及十四五投资趋势报告
- 2024-2030年全球及中国蝶阀执行器行业供需现状及盈利前景预测报告
- 2024-2030年全球及中国耐温标签行业应用规模及投资前景预测报告
- 2024-2030年全球及中国环氧玻璃钢行业销售动态及需求趋势预测报告
- 2024-2030年全球及中国海洋通信交流系统行业运行态势及投资前景预测报告
- 2024-2030年全球及中国模块化隔断系统行业发展动态及投资前景展望报告
- 2024-2030年全球及中国工业破碎机铲斗行业销售前景及供需情况预测报告
- 2024-2030年全球及中国低NOx燃烧器行业产销状况及需求规模预测报告
- 2024-2030年全球及中国B2B支付平台行业应用前景及盈利趋势预测报告
- 2024-2030年全球与中国粉末金属齿轮市场需求前景及发展趋势预测报告
- 2023年上海机场集团有限公司校园招聘笔试题库及答案解析
- 镜头的角度和方位课件
- 污水处理常用药剂简介知识讲解课件
- 五年级上册英语课件-Unit 1《My future》第1课时牛津上海版(三起) (共28张PPT)
- 光交接箱施工规范方案
- 气温和降水学案
- 普及人民代表大会制度知识竞赛试题库(1000题和答案)
- 国家电网公司施工项目部标准化管理手册(2021年版)线路工程分册
- 《汽车低压线束设计规范》
- 工程项目增加签证单
- 被一部电影感动记韩国电影《鸣梁海战》观后感
评论
0/150
提交评论