ch04Java面向对象编程技术.ppt

上传人:sccc 文档编号:5335724 上传时间:2023-06-27 格式:PPT 页数:76 大小:5.23MB
返回 下载 相关 举报
ch04Java面向对象编程技术.ppt_第1页
第1页 / 共76页
ch04Java面向对象编程技术.ppt_第2页
第2页 / 共76页
ch04Java面向对象编程技术.ppt_第3页
第3页 / 共76页
ch04Java面向对象编程技术.ppt_第4页
第4页 / 共76页
ch04Java面向对象编程技术.ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《ch04Java面向对象编程技术.ppt》由会员分享,可在线阅读,更多相关《ch04Java面向对象编程技术.ppt(76页珍藏版)》请在三一办公上搜索。

1、第4讲 Java面向对象编程技术,授课课时:8课时(360分钟)主编:刘志成,2,主要内容,本课目标新课引入与项目展示案例1 编写描述学生的Java类 案例2 编写描述大学生的Java类 案例3 方法重载与方法重写 案例4 定义形状 案例5 实现电视机遥控器 案例6 读取队列元素 案例7 操作字符串 课堂实践巩固与提高,3,本课目标,4,教学情境引入新课,熟练掌握类的定义,对象的创建及对象之间的交互,子类和抽象类的定义及多态的实现与使用。,工作任务,项目展示,5,教师示范与讲解1,任务一:编写描述学生的Java类,案例分析,6,面向对象的基本概念,1对象对象(Object)就是客观存在的任何事

2、物。2类 类(class)是对象的模板。即类是对一组有相同静态特性和相同动态行为的对象的抽象,一个类所包含的属性和方法描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。,7,面向对象的基本概念,3接口 如果我们把客观世界看成由不同的系统(或类)组成,这些系统(或类)之间需要通过一个公共的部件进行交流,我们把这个公共的部件称为接口(Interface)。4消息 消息就是对象之间进行通信的一种规格说明,对象之间进行交互作用和通信的工具。,8,面向对象的基本特性,1封装性 封装是一种信息隐蔽技术,它体现于类的说明中,是对象的重要特性。封装的目的在于把对象的设计者和对

3、象的使用者分开,使用者不需要知道行为实现的细节,只需用设计者提供的消息来访问该对象。在Java语言中,类是封装的最基本单位。封装有助于提高类和系统的安全性。,9,面向对象的基本特性,2继承性 继承是类不同抽象级别之间的关系,是子类自动共享父类数据和方法的机制。3多态性 对象根据所接收的消息产生行为,同一消息为不同的对象接收时可产生完全不同的行动,这种现象称为多态性。多态允许对任意指定的对象自动地使用正确的方法,并通过在程序运行过程中将对象与恰当的方法进行动态绑定来实现。,10,类的定义,Java中的类的定义包括类声明和类体两部分内容。类声明的格式如下:publicabstractfinal c

4、lass 类名 extends 父类名 implements 接口名表类体的通用格式如下:publicabstractfinal class 类名 extends 父类名 implements 接口名表 成员域定义部分;方法定义部分;,11,课堂演示-编写描述学生的Java类,【案例4-1】判断指定数的奇偶性【案例学习目标】理解面向对象的基本概念,掌握Java语言中类的基本格式,能够简单实现对客观事物到Java类的抽象。【案例知识要点】类的含义、类的定义、Java类的声明方法、Java类体的定义方法。【案例完成步骤】学生对象分析 类的定义,12,课堂演示-编写描述学生的Java类,学生对象分析

5、,13,课堂演示-编写描述学生的Java类,类的定义public class Student public static int iCounter=0;String sName;boolean bGender=false;/false代表女 int iAge;double dHeight;/单位为厘米 double dWeight;/单位为公斤 public static void getCounter()System.out.println(学生总数:+iCounter);,14,课堂演示-编写描述学生的Java类,public void getInfo()System.out.print(

6、姓名:+sName+t);System.out.print(性别:+bGender+t);System.out.print(年龄:+iAge+岁t);System.out.print(身高:+dHeight+厘米t);System.out.println(体重:+dWeight+公斤);public void setInfo(String n,boolean g,int a,double h,double w)sName=n;bGender=g;iAge=a;dHeight=h;dWeight=w;,15,学生模仿1,16,教师示范与讲解2,17,成员变量定义,成员变量描述了类的静态特性。类的

7、静态特性包括两部分:类的特性和对象的特性信息。对应的Java也将成员变量分为两种:类变量和实例变量。在变量定义时,可同时给其赋初值,将其初始化 类的成员变量定义的一般格式如下:存取修饰符 final transient static volatile 类型 变量名=值 或表达式,变量名=值或表达式;,18,成员方法定义,方法是一个包含一条或多条语句的代码块,用来完成一个相对独立的功能 方法有自己的名称以及可以重复使用的变量 与类成员变量一样,方法也分为类方法(也称为静态方法)和实例方法两种类的成员方法定义的一般格式如下:存取修饰符 final staticabstractnativesynch

8、ronized 方法返回类型 方法名(形式参数表)throws 异常表 可执行代码;,19,构造方法,构造方法的主要用途有两个:一是通知Java虚拟机创建类的对象,二是对创建的对象进行初始化如果在程序中没有显式的定义类的构造方法,Java编译器将自动提供一个构造方法,称为默认构造方法可以在【案例4-1】中,添加一个构造方法:public Student()iAge=36;dHeight=170;dWeight=65;,20,创建对象,1创建对象的步骤 在已经定义好的类的基础上,创建对象的过程分为如下3步:(1)创建对象引用变量;(2)创建类的实例对象;(3)将对象的引用赋值给对象引用变量。,2

9、1,创建对象,2new运算符通过new运算符创建对象时,Java虚拟机将在堆中开辟一个内存空间,用于存放对象的实例变量,并根据指定的构造方法和类的定义初始化这些实例变量。new运算符的一般格式为:对象引用变量 new 对象构造方法;3调用对象的成员 对象的成员(实例变量与实例方法)的调用采用“.”运算符,引用的一般格式为:对象引用变量.类的成员,22,类的继承,在Java中,从一个现有类的基础上定义新的类的过程称为派生。新定义的类称为派生类,也称为直接子类。基础类称为父类或超类。这种一个类派生出另一个类的关系即为继承关系,一个派生类将继承其父类的所有特性和操作。如果要创建一个继承父类的子类,只

10、需在类的声明中通过extends关键字指定要继承的类名就可以。,23,课堂演示-编写描述大学生的Java类,【案例4-2】编写描述大学生的Java类【案例学习目标】理解继承的基本思想,理解父类和子类的关系,能在父类的基础上创建子类【案例知识要点】父类和子类的概念、子类的实现、extends关键字【案例完成步骤】编写程序 编译并运行程序,24,课堂演示-编写描述大学生的Java类,编写程序public class College extends Studentprivate String sMajor;public void getMajor()System.out.println(专业:+sM

11、ajor);/调用子类的实例变量System.out.println(身高:+dHeight);/引用父类的实例变量public static void main(String args)College wangym;wangym=new College();wangym.getInfo();/调用父类的实例方法wangym.getMajor();/调用子类的实例方法,25,课堂演示-编写描述大学生的Java类,运行结果,26,学生模仿2,27,教师示范与讲解3,任务一:方法重载与方法重写,案例分析,28,this和super,this代表当前对象本身。通过this变量不仅可以引用当前对象的实

12、例变量,也可引用当前对象的实例方法;但由于类变量与类方法不属于具体的类对象,因此不能通过this变量引用类变量和类方法,在类方法中也不能使用this变量。在引用实例变量时,使用this变量是一种很好的习惯,它能使程序更加清晰,且不容易出错。super代表当前类的父类。通过super可以调用父类的构造方法和父类的成员(成员变量和成员方法)。,29,方法重载与方法重写,方法重载指类的同名方法在向其传递不同的参数时可以有不同的动作,实现不同的功能 子类从父类中继承方法时,需要修改父类中定义的方法(即只修改方法体,方法的参数类型、个数、顺序以及返回值保持相同),这就是方法的重写,30,课堂演示方法重载

13、与方法重写,【案例4-3】方法重载与方法重写【案例学习目标】理解方法重载的含义和应用场合,理解方法重写的含义和应用场合,掌握实现方法重载的方法,掌握实现方法重写的方法,能在实际应用中合理选择方法重载或方法重写。【案例知识要点】方法重载的含义、方法重写的含义、方法重载的方法、方法重写的方法。【案例完成步骤】编写程序 编译并运行程序,31,课堂演示-方法重载与方法重写,编写方法重载的程序 public class OverLoadDemo void purchase()System.out.println(买菜);void purchase(String what)System.out.print

14、ln(买+what);void purchase(String what,int number)System.out.println(买+number+斤+what);void purchase(String what,String where)System.out.println(到+where+买+what);,32,课堂演示-方法重载与方法重写,void purchase(String what,int number,String where)System.out.println(到+where+买+number+斤+what);void purchase(String what,int

15、 number,String where,String when)System.out.println(when+到+where+买+number+斤+what);public static void main(String args)OverLoadDemo old=new OverLoadDemo();old.purchase();old.purchase(大米);old.purchase(大米,100);old.purchase(大米,步步高超市);old.purchase(大米,100,步步高超市);old.purchase(大米,100,步步高超市,下午);,33,课堂演示-方法重载

16、与方法重写,方法重载运行结果,34,课堂演示-方法重载与方法重写,编写方法重写的程序 class StuString sName;void display(String name)System.out.println(我是一名学生,我的名字是:+name);class CollegeStu extends StuString sMajor;void display(String name)System.out.println(-);System.out.println(我是一名大学生,我的名字是:+name);sMajor=计算机;System.out.println(我学习的专业是:+sMa

17、jor);,35,课堂演示-方法重载与方法重写,class MiddleStu extends StuString sSubject;void display(String name)System.out.println(-);System.out.println(我是一名中学生,我的名字是:+name);sSubject=理科;System.out.println(我学习的科目是:+sSubject);,36,课堂演示-方法重载与方法重写,public class OverrideDemopublic static void main(String args)Stu stu=new Stu(

18、);CollegeStu cstu=new CollegeStu();MiddleStu mstu=new MiddleStu();Stu s;s=stu;s.display(刘津);s=cstu;s.display(王咏梅);s=mstu;s.display(刘志成);,37,课堂演示-方法重载与方法重写,方法重写运行结果,38,学生模仿3,39,教师示范与讲解4,40,抽象类与抽象方法,在面向对象分析设计时,可将一些实体作高度抽象定义成抽象类。抽象类没有任何对象,只可作为一个模板用于创建子类,以及为面向对象提供更灵活的多态机制 抽象类定义的一般格式如下:public abstract cl

19、ass 类名 extends 父类名 implements 接口名表 方法体;,41,抽象类与抽象方法,抽象类的声明,必须在class关键字之前添加abstract关键字。抽象类与其他类一样,可继承于其他类,也可实现接口。但定义抽象类的主要目的就是为了创建子类,因此abstract类不可以是final类。抽象类中可以不包含抽象方法,但包含抽象方法的类必须是抽象类。抽象方法声明的一般格式如下:存取修饰符 abstract 方法返回类型 方法名(形式参数表)throws 异常表;,42,Final修饰符,出于保密或其他设计上的原因,希望类或类中成员变量、成员方法不被修改或重写,可以通过Java提供

20、的final修饰符来实现 在类定义时,可使用final修饰符使类不被继承 在定义成员变量时,可通过final修饰符定义常量 在定义方法时,可使用final修饰符避免方法被子类重写,43,课堂演示-定义形状,【案例4-4】定义形状【案例学习目标】了解抽象类的定义方法,掌握由抽象类得到具体类的方法,能根据实际应用编写抽象类和具体类【案例知识要点】抽象类的定义、抽象类和具体类的关系、abstract关键字【案例完成步骤】编写程序 编译并运行程序,44,课堂演示-定义形状,编写程序abstract class Shapepublic abstract void getArea();class Circ

21、le extends Shapefinal double PI=3.1415926;double dRadius;public void getArea()System.out.println(圆的面积为:+PI*dRadius*dRadius);public Circle(double r)this.dRadius=r;,45,课堂演示-定义形状,class Rectangle extends Shapedouble dLength;double dWidth;public void getArea()System.out.println(矩形的面积为:+dLength*dWidth);pu

22、blic Rectangle(double l,double w)this.dLength=l;this.dWidth=w;public class AbstractDemopublic static void main(String args)Circle cc=new Circle(5.6);cc.getArea();Rectangle rt=new Rectangle(8,6);rt.getArea();,46,课堂演示-定义形状,运行结果,47,学生模仿4,48,教师示范与讲解5,49,接口定义,接口被描述为一组方法声明和常量的集合 接口只定义一组方法协议(或称标准),但没有作任何具体

23、实现。接口的定义与类的定义相似,其一般格式为:public interface 接口名 extends 父辈接口列表 常量定义 方法声明,50,实现接口,实现接口的定义格式如下:publicabstractfinal class 类名 extends 父类名 implements 接口名表/接口体内容1/接口方法实现/接口体内容2与普通类的定义不同,接口实现必须包含“implements 接口名表”部分 在实现类中,一般必须重写接口中声明的所有方法。重写方法的名称、返回值、修饰符必须与接口中声明的方法一致。,51,课堂演示-实现电视机遥控器,【案例4-5】实现电视机遥控器【案例学习目标】进一步

24、理解继承和多继承的含义,掌握接口声明的方法,掌握接口体定义的方法,会根据实际应用编写接口【案例知识要点】接口声明、接口体定义、使用接口、interface关键字【案例完成步骤】编写接口程序 编写实现接口的程序 编写测试接口的主类 运行程序,52,课堂演示-实现电视机遥控器,编写接口程序 interface IRemoteCtrl int VOLUME_MIN=0;int VOLUME_MAX=100;boolean powerOnOff(boolean b);/电源开关 int volumeUp(int increment);/声音放大 int volumeDown(int decrement

25、);/声音减小 void mute();/静音,53,课堂演示-实现电视机遥控器,编写实现接口的程序(见书本)编写测试接口的主类public class TestTvCtrl public static void main(String args)TVRemoteCtrl tv=new TVRemoteCtrl(海尔 H600);tv.powerOnOff(true);/tv.powerOnOff(false);tv.setChannel(45);tv.channelDown();tv.mute();tv.volumeUp(2);tv.volumeUp(3);,54,课堂演示-实现电视机遥控器

26、,运行结果,55,学生模仿5,56,教师示范与讲解6,57,定义包,在Java语言中,与客观世界中系统相对应的概念称为包(Package)。包是一种分组机制,设计者可将一组高内聚、低耦合、关联性较强的模型元素(可以是类、接口、包)组织在一起,形成一个更高层次的单元包由一组类和接口组成。它是管理大型名字空间,避免名字冲突的工具。每一个类和接口的名字都包含在某个包中。使用包的作用有两个:一是划分类名空间,二是控制类之间的访问。定义包的一般格式如下:package packageName;,58,引入包,在一个类中,如果要使用其他包中的类和接口则用import关键词来标明来自其他包中的类。Java提

27、供import关键词来引用包,指定包的名字,包括路径名和类名,用“*”匹配符可以调入多个类。通常一个类只能引用与它在同一个包中的类,如果需要使用其他包中的public类,则可以使用如下的几种方法。在要使用的类前加包名 用import关键字加载需要使用的类 用import关键字加载整个包 设置CLASSPATH环境变量,59,Java常用类库,60,数组与字符串,数组是一种常用的数据结构,相同数据类型的元素按一定顺序排列就构成了数组。数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组有一个成员变量length来说明数组元素的个数。创建一个空数组。int list=ne

28、w int5;用初始数值填充数组。String names=liujin,wangym,Liuzc;,61,一维数组,声明一个数组其实就是要确定数组名、数组的维数和数组元素的数据类型。声明数组的语法格式有两种:数组元素类型 数组名;或 数组元素类型 数组名;声明数组后,要想使用数组需要为它开辟内存空间,即创建数组空间。创建数组空间的语法格式为:数组名=new 数组元素类型数组元素的个数;在声明数组时“”中不允许指定数组元素的个数,如int iSno6将导致语法错误。正确区分“数组的第5个元素”和“数组元素5”很重要,因为数组下标从0开始,“数组的第5个元素”的下标是4,而“数组元素5”的下标是

29、5,实际是数组的第6个元素 当数组初始化后就可通过数组名与下标来引用数组中的每一个元素。一维数组元素的引用格式如下:数组名数组下标,62,二维数组,二维数组的声明与一维数组相似,只是需要给出两对方括号。格式如下:类型标识符 数组名;或 类型标识符 数组名;在初始化二维数组时,可以只指定数组的行数而不给出数组的列数,每一行的长度由二维数组引用时决定,但不能只指定列数而不指定行数 不指定行数只指定列数是错误的,63,课堂演示-读取队列元素,【案例4-6】读取队列元素【案例学习目标】了解数组的含义,掌握数组的定义方法,掌握数组的赋值方法,掌握数组元素的引用方法,在实际编程中能够合理地使用数组【案例知

30、识要点】一维数组的定义、一维数组的赋值、一维数组元素的引用【案例完成步骤】编写程序 编译并运行程序,64,课堂演示-读取队列元素,编写程序public class Queue public static void main(String args)int i;int a=new int5;for(i=0;i=0;i-)System.out.println(a+i+=+ai);,65,课堂演示-读取队列元素,运行结果,66,学生模仿6,67,教师示范与讲解7,68,String类,字符串是程序中的一个通用且重要的信息类型,在程序中经常要把各种各样的信息以字符串的形式传递、通信和输出显示,而Jav

31、a为字符串操作提供了许多特殊的支持。,69,StringBuffer类,StringBuffer是字符串类String的对等类,提供了大量的字符串功能。String表示定长、不可变的字符序列,而StringBuffer表示变长的和可修改的字符序列,可用于动态创建和操作动态字符串信息。StringBuffer支持字符或子字符串的插入或追加的操作,并可针对这些字符或子字符串的添加而自动地增加空间。,70,课堂演示-操作字符串,【案例4-7】操作字符串【案例学习目标】了解String对象和StringBuffer对象的异同,掌握String对象的构造方法,掌握StringBuffer对象的构造方法,

32、在实际开发中能够合理使用String对象或StringBuffer对象提供的相关方法完成字符串的基本操作【案例知识要点】String对象的构造方法、String对象的常用方法、StringBuffer对象的构造方法、StringBuffer对象的常用方法【案例完成步骤】编写程序 编译并运行程序,71,课堂演示-操作字符串,编写程序public class StringDemo public static void main(String args)String str=new String4;str0=Amy;str1=Dear;StringBuffer sb1=new StringBuffe

33、r(str0);sb1.insert(0,str1);str2=new String(sb1);StringBuffer sb2=new StringBuffer();sb2.append(D);sb2.append(Amy+74108206);sb2.insert(1,ear);str3=new String(sb2);for(int i=0;i 4;i+)System.out.println(str+i+=+stri);,72,课堂演示-操作字符串,运行结果,73,学生模仿7,74,课堂实践,1.实践目标分析(1)定义一个描述宠物的抽象类Pet,包含重量(weight)和年龄(age)两个

34、成员变量和显示宠物资料的showInfo方法以及获取宠物资料的getInfo方法(2)设计一个可吃的接口Eatable,包含一个被吃(beEatted)的方法(3)由Pet类继承得到猫类(Cat)和狗类(Dog),添加叫声(cry)的成员变量,并重写Pet类的相关方法;狗类(Dog)要实现Eatable接口(4)设计一个水果类(Fruit),包含颜色(color)和产地(address)两个成员变量。和显示水果资料的showInfo方法以及获取水果资料的getInfo方法;水果类(Fruit)要实现Eatable接口(5)由水果类(Fruit)继承得到苹果(Apple)类,添加一个品种(typ

35、e)的成员变量和获取品种的成员方法(getType)(6)由水果类(Fruit)继承得到香蕉(Banana)类(7)创建测试程序,包含main方法,在main方法中声明和创建四个实例:猫、狗、苹果和香蕉,调用显示资料的方法输出对象的详细信息;创建Object对象,分别引用狗、苹果和香蕉,并调用beEatted方法,75,本课小结,1.掌握面向对象程序设计的基本概念 2.掌握Java语言中类的声明及由类创建对象并使用对象 3.掌握Java语言中继承的实现方法 4.了解Java语言应用接口实现多态的方法与Java常用类库,76,课外拓展,1.从最近10年程序员考试试题中完成与本章相关知识点的题目,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号