第3课软件开发基础知识培训_面向对象编程

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

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

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

资源描述

软件开发基础知识培训第3章面向对象编程讲师:魏国生Email:weiguosheng@boco.com.cn中国移动辽宁公司网络优化中心JavaSE知识图解JAVA发展历程JAVA环境搭建基础程序设计数据类型流程控制运算符数组面向对象编程类和对象属性方法设计模式接口三大特性应用程序开发JDBC集合异常处理类库多线程IO反射网络连接OracleJAVA新特性Eclipse使用泛型枚举装箱/拆箱可变参数Annotation中国移动辽宁公司网络优化中心学习面向对象内容的三条主线1.java类及类的成员2.面向对象的三大特征3.其它关键字中国移动辽宁公司网络优化中心学习内容3.1面向对象与面向过程3.2java语言的基本元素:类和对象3.3类的成员之一:属性3.4类的成员之二:方法3.5对象的创建和使用3.6再谈方法3.7面向对象特征之一:封装和隐藏3.8类的成员之三:构造器(构造方法)3.9几个关键字:this、package、import中国移动辽宁公司网络优化中心3.1面向对象与面向过程面向对象(OOP)与面向过程二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。面向对象的三大特征封装(Encapsulation)继承(Inheritance)多态(Polymorphism)OOP:ObjectOrientedProgramming面向过程:procedureorientedprogramming中国移动辽宁公司网络优化中心例子:人把大象装冰箱面向过程1.打开冰箱2.把大象装进冰箱3.把冰箱门关住面向对象人冰箱大象人{打开(冰箱){冰箱.开门();}操作(大象){大象.进入();}关闭(冰箱){冰箱.关门();}}冰箱{开门(){}关门(){}}大象{进入(){}}中国移动辽宁公司网络优化中心类与类之间的关系关联关系继承关系中国移动辽宁公司网络优化中心类与类之间的关系聚集组合聚合关系中国移动辽宁公司网络优化中心面向对象的思想概述程序员从执行者转化成了指挥者。完成需求时:先去找具有所需功能的对象来用。如果该对象不存在,那么创建一个具有所需功能的对象。这样简化开发并提高复用。类(class)和对象(object)是面向对象的核心概念。类是对一类事物描述,是抽象的、概念上的定义对象是实际存在的该类事物的每个个体,因而也称实例(instance)。“万事万物皆对象”中国移动辽宁公司网络优化中心java类及类的成员现实世界万事万物是由分子、原子构成的。同理,Java代码世界是由诸多个不同功能的类构成的。现实世界中的分子、原子又是由什么构成的呢?原子核、电子!那么,Java中用类class来描述事物也是如此属性:对应类中的成员变量行为:对应类中的成员方法Field=属性=成员变量,Method=(成员)方法=函数中国移动辽宁公司网络优化中心可以理解为:类=汽车设计图;对象=实实在在的汽车面向对象程序设计的重点是类的设计定义类其实是定义类中的成员(成员变量和成员方法)面向对象的思想概述中国移动辽宁公司网络优化中心1.java类及类的成员中国移动辽宁公司网络优化中心类的语法格式修饰符class类名{属性声明;方法声明;}说明:修饰符public:类可以被任意访问类的正文要用{}括起来举例:publicclassPerson{privateintage;//声明私有变量agepublicvoidshowAge(inti){//声明方法showAge()age=i;}}中国移动辽宁公司网络优化中心3.3类的成员之一:属性语法格式:修饰符类型属性名=初值;说明:修饰符private:该属性只能由该类的方法访问。修饰符public:该属性可以被该类以外的方法访问。类型:任何基本类型,如int、boolean或任何类。举例:publicclassPerson{privateintage;//声明private变量agepublicStringname=“Lila”;//声明public变量name}中国移动辽宁公司网络优化中心补:变量的分类:成员变量与局部变量在方法体外,类体内声明的变量称为成员变量。在方法体内部声明的变量称为局部变量。注意:二者在初始化值方面的异同:同:都有生命周期异:局部变量除形参外,需显式初始化。成员变量局部变量实例变量(不以static修饰)类变量(以static修饰)形参(方法签名中定义的变量)方法局部变量(在方法内定义)代码块局部变量(在代码块内定义)所有变量成员变量(属性)和局部变量的区别?成员变量:成员变量定义在类中,在整个类中都可以被访问。成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。成员变量有默认初始化值。成员变量的权限修饰符可以根据需要,选择任意一个局部变量:局部变量只定义在局部范围内,如:方法内,代码块内等。局部变量存在于栈内存中。作用的范围结束,变量空间会自动释放。局部变量没有默认初始化值,每次必须显式初始化。局部变量声明时不指定权限修饰符中国移动辽宁公司网络优化中心3.4类的成员之二:方法语法格式:修饰符返回值类型方法名(参数列表){方法体语句;}说明:修饰符:public,private,protected等。返回值类型:return语句传递返回值。没有返回值:void。举例:publicclassPerson{privateintage;publicintgetAge(){returnage;}//声明方法getAgepublicvoidsetAge(inti){//声明方法setAgeage=i;//将参数i的值赋给类的成员变量age}}中国移动辽宁公司网络优化中心java类及类的成员java类的实例化,即创建类的对象如何使用java类?3.5对象的创建和使用中国移动辽宁公司网络优化中心对象的创建和使用使用new+构造器创建一个新的对象;使用“对象名.对象成员”的方式访问对象成员(包括属性和方法);publicclassAnimal{publicintlegs;publicvoideat(){System.out.println(“Eating.”);}publicviodmove(){System.out.println(“Move.”);}}举例:publicclassZoo{publicstaticvoidmain(Stringargs[]){Animalxb=newAnimal();xb.legs=4;System.out.println(xb.legs);xb.eat();xb.move();}}中国移动辽宁公司网络优化中心Java类数据1……数据n方法1……方法n属性方法Animallegseat()move()数据(属性)方法类名xh:Animallegs=0eat()move()xb:Animallegs=4eat()move()newAnimal()newAnimal()举例Java中类与对象中国移动辽宁公司网络优化中心对象的创建和使用如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。举例:publicclassZoo{publicstaticvoidmain(Stringargs[]){Animalxb=newAnimal();Animalxh=newAnimal();xb.legs=4;xh.legs=0;System.out.println(xb.legs);//4System.out.println(xh.legs);//0xb.legs=2;System.out.println(xb.legs);//2System.out.println(xh.legs);//0}}中国移动辽宁公司网络优化中心提示类的访问机制:在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。中国移动辽宁公司网络优化中心对象的产生classPerson{intage;voidshout(){System.out.println(“oh,mygod!Iam”+age);}}Personp1=newPerson();执行完后的内存状态中国移动辽宁公司网络优化中心对象的产生当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型,如上面的Person及前面讲过的数组。成员变量类型初始值byte0short0int0long0Lfloat0.0Fdouble0.0Dchar‘\u0000’(表示为空)booleanfalse引用类型null对象的使用classTestPerson{publicstaticvoidmain(String[]args){//程序运行的内存布局如下图Personp1=newPerson();Personp2=newPerson();p1.age=-30;p1.shout();p2.shout();}}对象的生命周期中国移动辽宁公司网络优化中心面向对象思想“落地”法则(一)1.关注于类的设计,即设计类的成员:属性、方法2.类的实例化,即创建类的对象(比如:Personp=newPerson())3.通过“对象.属性”、“对象.方法”执行中国移动辽宁公司网络优化中心方法的重载(overload)重载的概念在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。重载示例://返回两个整数的和intadd(intx,inty){returnx+y;}//返回三个整数的和intadd(intx,inty,intz){returnx+y+z;}//返回两个小数的和doubleadd(doublex,doubley){returnx+y;}中国移动辽宁公司网络优化中心publicclassPrintStream{publicstaticvoidprint(inti){……}publicstaticvoidprint(floatf){……}privatestaticvoidprint(Strings){……}publicstaticvoidmain(String[]args){print(3);print(1.2f);print(“hello!”);}}函数的重载中国移动辽宁公司网络优化中心练习31.判断:与voidshow(inta,charb,doublec){}构成重载的有:a)voidshow(intx,chary,doublez){}//nob)intshow(inta,doublec,charb){}//yesc)voidshow(inta,doublec,charb){}//yesd)booleanshow(intc,charb){}//yese)voidshow(doublec){}//yesf)doubleshow(intx,chary,doublez){}//nog)voidshows(){doublec}//no中国移动辽宁公司网络优化中心方法的参数传递方法,必须有其所在类或对象调用才有意义。若方法含有参数:形参:方法声明时的参数实参:方法调用时实际传给形参的参数值Java的实参值如何传入方法呢?Java里方法的参数传递方式只有一种:值传递。即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。中国移动辽宁公司网络优化中心方法的参数传递publicclassTestTransfe

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

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

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

×
保存成功