版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
类与对象复习说明类与对象的区别?举例说明什么是方法重载?Java中的构造方法与实例方法,有什么区别?思考:对属性进行封装用构造方法实现对象成员的初始化对构造方法进行重载
要点:理解封装的概念掌握private关键字掌握构造方法掌握方法重载目标:编写一个类,代表学生,要求:具有属性:姓名、年龄具有行为:自我介绍学生的最小年龄要求18岁publicclassStudent1{publicStringname;//学生姓名publicintage;//年龄/***返回自我介绍的内容*/publicStringintroduction(){return"大家好!我是"+name+",我今年"+age+"岁";}}编写一个测试类,要求:实例化一个学生对象,并对其初始化在控制台输出该学生的自我介绍publicclassStudent1Test{publicstaticvoidmain(String[]args){Student1s=newStudent1();="李芳";s.age=10;System.out.println(roduction());}}要满足学生的最小年龄要求,可以通过对属性的封装来实现大家好!我是李芳,我今年10岁publicclassStudent2{privateStringname;//学生姓名//返回学生姓名publicStringgetName(){
returnname;}//设定学生姓名publicvoidsetName(Stringname){
=name;}}
封装,就是隐藏实现细节将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性Student2s=Student2();s.setName("李芳");StringsName=s.getName();通过setter、getter方法访问name属性this代表当前类的实例封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问3、在setter和getter方法中,加入对属性的存取限制publicclassStudent3{privateStringname;//学生姓名privateintage;//年龄publicintgetAge(){ returnage;}publicvoidsetAge(intage){if(age<18){System.out.println("错误!最小年龄应为18岁!");this.age=18;//如果不符合年龄要求,则赋予默认值}else{this.age=18;}}//此处省略对name属性的setter、getter方法}123publicclassStudent3Test{publicstaticvoidmain(String[]args){ Student3s=newStudent3(); s.setName("李芳"); s.setAge(10); System.out.println(roduction());}}使用封装,增加了数据访问限制,增强了程序的可维护性错误!最小年龄应为18岁!大家好!我是李芳,我今年18岁测试类通过调用setter方法,为对象的各个属性赋值小结1使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗?在Java程序中,代码封装带给我们的好处是什么?小结2请通过代码封装,实现如下需求:编写一个类Book,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200为各属性设置赋值和取值方法具有方法:detail,用来在控制台输出每本教材的名称和页数编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确classBook{ privateStringtitle; privateintpageNum; publicintgetPageNum(){ returnpageNum; } publicvoidsetPageNum(intpageNum){ if(pageNum<200){ System.out.println("页数不能少于200页!"); this.pageNum=200; }else this.pageNum=pageNum; } publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicvoiddetail(){ System.out.println("书名:"+title+",页数:"+pageNum); }
}publicclassBookTest{ publicstaticvoidmain(Stringargs[]){ Bookb=newBook(); b.setTitle("Java快速入门"); b.setPageNum(109); b.detail(); }}开发学生类Student4,要求:具有属性:姓名、年龄、学历、职位具有行为:自我介绍publicclassStudent4{privateStringname;//姓名privateintage;//年龄privateStringaddress;//家庭住址privateStringtelephone;//联系方式publicStringintroduction(){return“大家好!我是”+name+“,我今年”+age+“岁,家庭住址“+address+”,联系方式是"+telephone;}publicStringgetName(){ returnname;}publicvoidsetName(StringmyName){ name=myName;}//以下是其他属性的setter、getter方法,此处省略}编写一个测试类,要求:实例化一个学生对象,并对其初始化在控制台输出该教员的自我介绍publicclassStudent4Test{publicstaticvoidmain(String[]args){Student4s=newStudent4();s.setName("李芳");s.setAge(23);s.setAddress(“大兴…");System.out.println(roduction());}}要简化对象初始化的代码,可以通过构造方法来解决大家好!我是李芳,我今年23岁……….Student4中有太多的属性及对应的setter方法,在初始化时,很容易就忘记了,有没有可能简化对象初始化的代码?构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型publicclassStudent5{privateStringname;//学生姓名//构造方法publicStudent5(){name="无名氏";}}publicStudent5Test{publicstaticvoidmain(String[]args){ Student5teacher=newStudent5();}}使用new关键字调用构造方法通过带参数的构造方法,显式地为实例变量赋予初始值publicclassStudent6{privateStringname;//学生姓名privateintage;//年龄privateStringaddress;//家庭住址privateStringtelephone;//联系方式//带参数的构造方法publicStudent6(StringpName,intpAge,StringpAdddress,StringpTelephone){name=pName;age=pAge;//可以增加对age等属性的存取限制条件education=pAddress;position=pTelephone;}publicStringintroduction(){return“大家好!我是”+name+“,我今年”+age+“岁,家庭住址是”
+address+“,联系方式"+telephone;}}通过调用带参数的构造方法,简化对象初始化的代码publicclassStudent6Test{publicstaticvoidmain(String[]args){Student6s=newStudent6("李芳",23,“大兴”,);System.out.println(roduction());}}创建对象时,一并完成了对象成员的初始化工作大家好!我是李芳,我今年23岁,……………小结3编写一个类Book2,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200具有方法:detail,用来在控制台输出每本教材的名称和页数。具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确classBook2{ privateStringtitle; privateintpageNum; publicBook2(Stringtitle,intpageNum){ this.title=title; if(pageNum<200){ System.out.println("页数不能少于200页!"); this.pageNum=200; }else this.pageNum=pageNum; } publicvoiddetail(){ System.out.println(“书名:”+title+“,页数:"+pageNum); }
}publicclassBook2Test{ publicstaticvoidmain(String[]args){ Book2b=newBook2("Java入门",107); b.detail();
}}生活中的方法重载类方法方法参数方法实现司机轿车巴士火车驾驶启动、行驶、……等待乘客上车、启动、行驶、到站停车、……正点发车、行驶、到站停车、……如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同方法重载并不陌生java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式publicclassTest{publicstaticvoidmain(String[]args){inti=0;charc='z';Stringstr="hello";System.out.println(i);System.out.println(c);System.out.println(str);}}PrintStreamprintln(int)println(char)println(String)……方法名相同,参数类型不同调用不同的println方法方法重载java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个max()方法Mathmax(inta,intb)max(floata,floatb)max(longa,longb)max(doublea,doubleb)publicclassTest{publicstaticvoidmain(String[]args){Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);}}方法重载构造方法重载是方法重载的典型示例publicclassStudent7{privateStringname;//学生姓名privateStringschool=“北京联合大学";publicStudent7(Stringname){ =name;//设定学生姓名}publicStudent7(Stringname,Stringschool){=name;//设定学生姓名this.school=school;//设定学生所在学校}publicStringintroduction(){ return"大家好!我是"+school+"的"+name;}}构造方法重载通过调用不同的构造方法来表达对象的多种初始化行为例如:默认情况下,学生来自北京联合大学,初始化时,只需提供学生姓名有时,需要提供所在学生来自学校及学生姓名publicclassStudent7Test{publicstaticvoidmain(String[]args){Student7s1=newStudent7("李芳");System.out.println(roduction());Student7s2=newStudent7("张欣",“北京工业大学");System.out.println(roduction());}}大家好!我是北京联合大学的李芳大家好!我是北京工业大学的张欣小结4编写一个类Book3,代表教材:具有属性:名称(title)、页数(pageNum)、种类(type)具有方法:detail,用来在控制台输出每本教材的名称、页数、种类具有两个带参构造方法:第一个构造方法中,设置教材种类为“计算机”(固定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定编写测试类Book3Test进行测试:分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确classBook3{ privateStringtitle; privateintpageNum; privateStringtype; publicBook3(Stringtitle,intpageNum){ this.title=title; thi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度云计算与大数据融合应用合同2篇
- 承租方装修的租赁合同协议标准版3篇
- 大货车买卖合同协议书模板
- 二零二四年度环保设施建设和运营合同with设施内容和环保标准详细描述
- 二零二四年度电影《某某》演员特技替身合同3篇
- 二零二四年度智能交通系统建设合作协议
- 2024年度窗帘原材料采购合同
- 2024版房地产居间合同范例2篇
- 二零二四年度大数据中心建设及运营合同2篇
- 2024年度租赁合同担保支付条款
- 《土地整治学》期末考试复习题库资料(含答案)
- DL∕T 325-2010 电力行业职业健康监护技术规范
- 2024-2030年中国数字商务应用行业市场发展趋势与前景展望战略分析报告
- NB-T+25046-2015核电厂水工设计规范
- 哈利波特与死亡圣器课件
- 《中国痤疮治疗指南》解读
- 创伤骨科新进展新技术
- 黑龙江省齐齐哈尔市依安县等4地2023-2024学年九年级上学期期末历史试题
- 2024年应急救护知识考试题库300题(含答案)
- 公车拍卖拍卖服务整体设想及策划
- 用数对确定位置(周-璟)
评论
0/150
提交评论