自考Java程序设计一(第3章面向对象编程基础)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《Java语言程序设计(一)》串讲主讲人:周立民更多优质自考资料尽在百度贴吧自考乐园俱乐部()欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........面向对象编程基础本部分重点ØJAVA语言的类Ø对象Ø继承Ø多态Ø接口ØJAVA小应用程序基础世界是由什么组成的?名胜人物品动物,植物……面向对象编程基础对象的特征——属性属性——对象具有的各种特征每个对象的每个属性都拥有特定值例如:王小红和朱小雨的体重不一样60kg60kg王小红王小红属性35岁35岁收银员小王对象的特征——方法方法——对象执行的操作打单打单收银收银方法刷卡刷卡收银员王小红封装对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割谁看见过只有“完好的零件和颜色”而不能开动的汽车?谁看见过只有“完好的零件和颜色”而不能开动的汽车?类:从对象抽取出类顾客类轿车类…………类是模子,确定对象将会拥有的特征(属性)和行为(方法)类是对象的类型不同于int类型:具有方法各种口味的球状冰淇淋球状冰淇淋模子球状冰淇淋模子类和对象有什么区别呢?类是抽象的概念,仅仅是模板,比如说:“人”对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”小布什普京克林顿……“人”类特征(属性)年龄体重行为(方法)衣食住行Java是面向对象的语言所有Java程序都以类class为组织单元关键字class定义自定义的数据类型publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println(使用Java语言理解程序逻辑);…}}Java类模板类将现实世界中的概念模拟到计算机程序中publicclass类名{//定义属性部分属性1的类型属性1;属性2的类型属性2;…属性n的类型属性n;//定义方法部分方法1;方法2;…方法m;}定义类定义一个类的步骤1、定义类名2、编写类的属性3、编写类的方法常见错误publicclass.Book{StringbookName;StringauthorName;intpageNum;booleanisAvailable;}类命名规则:1、不能使用Java关键字2、首字母可以为字母,也可以是“_”或“$”(建议不要这样)3、不能包含空格或“.”号类命名规则:1、不能使用Java关键字2、首字母可以为字母,也可以是“_”或“$”(建议不要这样)3、不能包含空格或“.”号代码错误代码错误如何创建和使用对象使用对象的步骤:使用new创建类的一个对象使用对象:使用“.”进行以下操作给类的属性赋值:对象名.属性调用类的方法:对象名.方法名()Schoolcenter=newSchool();center.schoolName=“北京大学;//给属性赋值center.toString();//调用类的方法,该方法中的操作将被执行面向对象(OO)的优点便于程序模拟现实世界中的实体用“类”表示实体的特征和行为隐藏细节对象的行为和属性被封装在类中,外界通过调用类的方法来获得,不需关注内部细节如何实现可重用可以通过类的模板,创建多个类的对象数据类型总结intdoublecharString使用class定义的类型StudentTeacherSchool……基本数据类型基本数据类型引用数据类型引用数据类型数据类型使用区别数据类型特征声明使用基本数据类型没有方法inti=8;i++;引用数据类型具有方法Studentstu=newStudent();stu.age++;类的方法写出狮子对象的“跑”方法写出狮子对象的“叫”方法电动玩具狮子属性:颜色:黄色行为:跑叫按此按钮,狮子开始跑按此按钮,狮子开始跑如何定义类的方法类的方法定义类的某种行为(或功能)方法的定义方法的名称方法的主体方法返回的数据类型定义类的方法public返回值类型方法名(){//这里编写方法的主体}步骤一:定义方法名以及返回值步骤一:定义方法名以及返回值步骤二:编写方法体步骤二:编写方法体方法的命名如何给方法起名字?必须以字母、‘_’或‘$’开头可以包括数字,但不能以它开头遵循的命名规范通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写方法的返回值两种情况如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型如果方法没有返回值,返回类型为voidpublicclassStudent{Stringname=张三;publicvoidgetName(){returnname;}……}返回类型要匹配返回类型要匹配return表达式;return表达式;编译错误编译错误常见错误publicclassSchool{……publicstaticvoidmain(String[]args){……return“北京大学!;}}返回类型是void方法中不能有返回值返回类型是void方法中不能有返回值常见错误publicclassStudent{publicdoublegetInfo(){doubleweight=95.5;doubleheight=1.69;returnweight,height;}}方法至多可以返回一个值,不能返回多个值方法至多可以返回一个值,不能返回多个值方法调用方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果方法调用:执行方法中包含的语句对象名.方法名();对象名.方法名();方法调用小结方法之间允许相互调用,不需要知道方法的具体实现,提高了效率情况举例1、类Student的方法a()调用Student类的方法b(),直接调用publicvoida(){b();//调用b()}2、类Student的方法a()调用类Teacher的方法b(),先创建类对象,然后使用“.”调用publicvoida(){Teachert=newTeacher();t.b();//调用Teacher类的b()}变量作用域变量声明的位置决定变量作用域变量作用域确定可在程序中按变量名访问该变量的区域…for(inti=0,a=0;i4;i++){a++;}System.out.println(a);…a的作用域仅在for循环中a的作用域仅在for循环中代码错误代码错误变量作用域变量1类型变量1;变量2类型变量2;变量3类型变量3;public返回类型方法1(){变量4类型变量4;}public返回类型方法2(){变量5类型变量5;}publicclassAutoLion{}AutoLion类的方法别的类的方法谁能使用这些变量?谁能使用这些变量?方法1方法2成员变量局部变量局部变量面向对象的编程思维ScoreCalc类和Test类publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print(请输入Java成绩:);intjava=input.nextInt();……/*计算并显示输出*/inttotal=java+c+db;doubleavg=total/3;System.out.print(总成绩:+total);System.out.print(\n平均分:+avg);}一次还可以接受,如果还要再执行这个功能,难道还要重复再写?一次还可以接受,如果还要再执行这个功能,难道还要重复再写?calcDiffTimecalcTotalScore()ScoreCalcshowTotalScore()calcAvg()showAvg()main(){//程序入口//计算并输出总成绩//计算并输出平均分}Test调用调用类的方法实现某个特定的功能,别的类不需要知道它如何实现!知道了实现此功能的类和它的方法名,就可以直接调用了,不用重复写代码!什么是封装publicclassTeacher2{privateStringname;//教员姓名//返回教员姓名publicStringgetName(){returnname;}//设定教员姓名publicvoidsetName(Stringname){this.name=name;}}封装,就是隐藏实现细节将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性Teacher2teacher=newTeacher2();teacher.setName(李芳);StringtName=teacher.getName();通过setter、getter方法访问name属性通过setter、getter方法访问name属性this代表当前类的实例this代表当前类的实例29如何实现封装封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问3、在setter和getter方法中,加入对属性的存取限制publicclassTeacher3{privateStringname;//教员姓名privateintage;//年龄publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age22){System.out.println(错误!最小年龄应为22岁!);this.age=22;//如果不符合年龄要求,则赋予默认值}else{this.age=age;}}//此处省略对name属性的setter、getter方法}12330如何实现封装publicclassTeacher3Test{publicstaticvoidmain(String[]args){AccpTeacher3teacher=newAccpTeacher3();teacher.setName(李芳);teacher.setAge(10);System.out.println(teacher.introduction());}}使用封装,增加了数据访问限制,增强了程序的可维护性使用封装,增加了数据访问限制,增强了程序的可维护性错误!最小年龄应为22岁!大家好!我是李芳,我今年22岁错误!最小年龄应为22岁!大家好!我是李芳,我今年22岁测试类通过调用setter方法,为对象的各个属性赋值31什么是构造方法构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型publicclassTeacher5{privateStringname;//教员姓名//构造方法publicTeacher5(){name=无名氏;}}PublicTeacher5Test{publicstaticvoidmain(String[]args){Teacher5teacher=newTeacher5();}}使用new关键字调用构造方法32带参数的构造方法通过带参数的构造方法,显式地为实例变量赋予初始值publicclassTeacher6{privateStringname;//教员姓名privateintage;//年龄privateStringeducation;//学历privateStringposition;//职位//带参数的构造方法PublicTeacher6(StringpName,intpAge,StringpEducation,StringpPosition){name=pName;age=pAge;//可以增加对age等属性的存取限制条件education=pEducation;position=pPosition;}publicStringintroduction(){return大家好!我是+name+,我今年+age+岁,学历+education+,目前职位是+position;}}33带参数的构造方法通过调

1 / 89
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功