第3章面向对象编程基础.ppt





《第3章面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《第3章面向对象编程基础.ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 语言程序设计(一)语言程序设计(一)串讲串讲面向对象编程基础面向对象编程基础本部分重点本部分重点JAVA语言的类对象继承多态接口JAVA小应用程序基础世界是由什么组成的?名胜名胜人人物品物品 动物动物 ,植物,植物 面向对象编程基础面向对象编程基础对对象的特征象的特征属性属性属性对象具有的各种特征 每个对象的每个属性都拥有特定值例如:王小红和朱小雨的体重不一样60kg王小红王小红属性属性35岁岁收银员小王收银员小王 对对象的特征象的特征方法方法方法对象执行的操作打单打单收银收银方法方法刷卡刷卡收银员王小红收银员王小红封装封装对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一
2、起,共同体现事物的特性,二者相辅相承,不能分割谁看见过只有谁看见过只有“完好完好的零件和颜色的零件和颜色”而不而不能开动的汽车?能开动的汽车?类:从对象抽取出类类:从对象抽取出类顾客类轿车类 类是模子,确定对象将会拥有的类是模子,确定对象将会拥有的特征(属性)和行为(方法)特征(属性)和行为(方法)类是对象的类型类是对象的类型不同于不同于int类型:具有方法类型:具有方法各种口味的球状冰淇淋各种口味的球状冰淇淋球状冰淇淋模子球状冰淇淋模子类和对象有什么区别呢?类和对象有什么区别呢?类是抽象的概念,仅仅是模板,比如说:“人”对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”小布什小布什普
3、京普京克林顿克林顿“人人”类类特征(属性)特征(属性)年龄年龄体重体重行为(方法)行为(方法)衣衣食食住住行行Java 是面向是面向对对象的象的语语言言 所有所有Java程序都以类程序都以类class为组织单元为组织单元关键字关键字class定义自定义的数据类型定义自定义的数据类型publicclassHelloWorldpublicstaticvoidmain(Stringargs)System.out.println(使用使用Java语言理解程序逻辑语言理解程序逻辑);Java类模板类模板类将现实世界中的概念模拟到计算机程序中publicclass类名类名/定义属性部分定义属性部分属性属性
4、1的类型的类型属性属性1;属性属性2的类型的类型属性属性2;属性属性n的类型的类型属性属性n;/定义方法部分定义方法部分方法方法1;方法方法2;方法方法m;定义类定义类定义一个类的步骤1、定义类名2、编写类的属性3、编写类的方法常见错误常见错误publicclass.BookStringbookName;StringauthorName;intpageNum;booleanisAvailable;类命名规则:类命名规则:1、不能使用、不能使用Java关键字关键字2、首字母可以为字母,也可以是、首字母可以为字母,也可以是“_”或或“$”(建议不要这建议不要这样样)3、不能包含空格或、不能包含空格
5、或“.”号号代码错误代码错误如何创建和使用对象如何创建和使用对象使用对象的步骤:使用new创建类的一个对象使用对象:使用“.”进行以下操作给类的属性赋值:对象名.属性调用类的方法:对象名.方法名()Schoolcenter=newSchool();center.schoolName=“北京大学北京大学;/给属性赋值给属性赋值center.toString();/调用类的方法,该方法中的操作将被执行调用类的方法,该方法中的操作将被执行面向对象(面向对象(OO)的优点)的优点便于程序模拟现实世界中的实体用“类”表示实体的特征和行为隐藏细节对象的行为和属性被封装在类中,外界通过调用类的方法来获得,不
6、需关注内部细节如何实现可重用可以通过类的模板,创建多个类的对象数据类型总结数据类型总结intdoublechar String使用使用class定义的类型定义的类型StudentTeacherSchool基本数据类型基本数据类型引用数据类型引用数据类型数据类型使用区别数据类型使用区别数据类型数据类型特征特征声明声明使用使用基本数据类型基本数据类型没有方法没有方法inti=8;i+;引用数据类型引用数据类型具有方法具有方法Studentstu=newStudent();stu.age+;类的方法类的方法写出狮子对象的“跑”方法写出狮子对象的“叫”方法电动玩具狮子电动玩具狮子属性:属性:颜色:黄色
7、颜色:黄色行为:行为:跑跑叫叫按此按钮,按此按钮,狮子开始跑狮子开始跑如何定义类的方法如何定义类的方法类的方法定义类的某种行为(或功能)方法的定义方法的定义方法的名称方法的名称方法的主体方法的主体方法返回的数据类型方法返回的数据类型定义类的方法定义类的方法public返回值类型返回值类型方法名方法名()/这里编写方法的主体这里编写方法的主体步骤一:定义方步骤一:定义方法名以及返回值法名以及返回值步骤二:编写方步骤二:编写方法体法体方法的命名方法的命名如何给方法起名字?必须以字母、_或开头可以包括数字,但不能以它开头遵循的命名规范通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小
8、写,其后单词首字母大写方法的返回值方法的返回值两种情况如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型如果方法没有返回值,返回类型为voidpublicclassStudentStringname=张三张三;publicvoidgetName()returnname;返回类型要匹配返回类型要匹配return表达式;表达式;编译错误编译错误常见错误常见错误public class School public static void main(String args)return“北京大学!;返回类型是返回类型是void方法中不能有返回值方法中不能有返回值常见
9、错误常见错误public class Student public double getInfo()double weight=95.5;double height=1.69;return weight,height;方法至多可以返回一个值,方法至多可以返回一个值,不能返回多个值不能返回多个值方法调用方法调用方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果方法调用:执行方法中包含的语句 对象名对象名.方法名()方法名();方法调用小结方法调用小结方法之间允许相互调用,不需要知道方法的具体实现,提高了效率 情况情况举例举例1、类、类Student的方法的方法a()调用调用Student
10、类类的方法的方法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循环中循环中代码错误
11、代码错误变量作用域变量作用域变量变量1类型类型变量变量1;变量变量2类型类型变量变量2;变量变量3类型类型变量变量3;public返回类型返回类型方法方法1()变量变量4类型类型变量变量4;public返回类型返回类型方法方法2()变量变量5类型类型变量变量5;publicclassAutoLionAutoLion类的方法类的方法别的类的方法别的类的方法谁能使用这些变量?谁能使用这些变量?方法方法1方法方法2成员变量成员变量局部变量局部变量局部变量局部变量面向对象的编程思维面向对象的编程思维ScoreCalc类 和 Test类publicstaticvoidmain(Stringargs)Sc
12、annerinput=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()Sco
13、reCalcshowTotalScore()calcAvg()showAvg()main()/程序入口程序入口/计算并输出总成绩计算并输出总成绩/计算并输出平均分计算并输出平均分Test调用调用调用调用类的方法实现某个特定的功能,类的方法实现某个特定的功能,别的类不需要知道它如何实现!别的类不需要知道它如何实现!知道了实现此功能的类和它的方法名,知道了实现此功能的类和它的方法名,就可以直接调用了,不用重复写代码!就可以直接调用了,不用重复写代码!什么是封装什么是封装publicclassTeacher2privateStringname;/教员姓名教员姓名/返回教员姓名返回教员姓名public
14、StringgetName()returnname;/设定教员姓名设定教员姓名publicvoidsetName(Stringname)this.name=name;封装,就是隐藏实现细节将属性私有化,提供公有方法访问私有属性通过这些公有方法访问私有属性 Teacher2teacher=newTeacher2();teacher.setName(李芳李芳);StringtName=teacher.getName();通过通过setter、getter方法方法访问访问name属性属性this代表当前类的实例代表当前类的实例29如何实现封装如何实现封装封装的实现:1、修改属性的可见性来限制对属性的
15、访问2、为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问3、在setter和getter方法中,加入对属性的存取限制publicclassTeacher3privateStringname;/教员姓名教员姓名privateintage;/年龄年龄publicintgetAge()returnage;publicvoidsetAge(intage)if(age22)System.out.println(错误!最小年龄应为错误!最小年龄应为22岁!岁!);this.age=22;/如果不符合年龄要求,则赋予默认值如果不符合年龄要求,则赋予默认值elseth
16、is.age=age;/此处省略对此处省略对name属性的属性的setter、getter方法方法12330如何实现封装如何实现封装publicclassTeacher3Testpublicstaticvoidmain(Stringargs)AccpTeacher3teacher=newAccpTeacher3();teacher.setName(李芳李芳);teacher.setAge(10);System.out.println(teacher.introduction();使用封装,增加了数据访问限制,增强了程序的可维护性使用封装,增加了数据访问限制,增强了程序的可维护性错误!最小年龄应
17、为错误!最小年龄应为22岁!岁!大家好!我是李芳,我今年大家好!我是李芳,我今年22岁岁测试类通过调用测试类通过调用setter方法,为对象的各个属性赋值方法,为对象的各个属性赋值31什么是构造方法什么是构造方法构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型publicclassTeacher5privateStringname;/教员姓名教员姓名/构造方法构造方法publicTeacher5()name=无名氏无名氏;PublicTeacher5Testpublicstaticvoidmain(Stringarg
18、s)Teacher5teacher=newTeacher5();使用使用new关键字调用构造方法关键字调用构造方法32带参数的构造方法带参数的构造方法通过带参数的构造方法,显式地为实例变量赋予初始值 publicclassTeacher6privateStringname;/教员姓名教员姓名privateintage;/年龄年龄privateStringeducation;/学历学历privateStringposition;/职位职位/带参数的构造方法带参数的构造方法PublicTeacher6(StringpName,intpAge,StringpEducation,StringpPosi
19、tion)name=pName;age=pAge;/可以增加对可以增加对age等属性的存取限制条件等属性的存取限制条件education=pEducation;position=pPosition;publicStringintroduction()return大家好!我是大家好!我是+name+,我今年,我今年+age+岁,学历岁,学历+education+,目前职位是目前职位是+position;33带参数的构造方法带参数的构造方法通过调用带参数的构造方法,简化对象初始化的代码publicclassTeacher6Testpublicstaticvoidmain(Stringargs)Te
20、acher6teacher=newTeacher6(李芳李芳,23,本科本科,咨询师咨询师);System.out.println(teacher.introduction();创建对象时,一并完成了对创建对象时,一并完成了对象成员的初始化工作象成员的初始化工作大家好!我是李芳大家好!我是李芳,我今年我今年23岁,学历本科,目前职位是咨询师岁,学历本科,目前职位是咨询师34生活中的方法重载生活中的方法重载类类方法方法方法参数方法参数方法实现方法实现司机司机轿车轿车巴士巴士火车火车驾驶驾驶启动、行驶、启动、行驶、等待乘客上车、启动、等待乘客上车、启动、行驶、到站停车、行驶、到站停车、正点发车、行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 基础

限制150内