《Java程序设计项目案例化教程》课件第3章-Java面向对象.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java程序设计项目案例化教程》课件第3章-Java面向对象.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计项目案例化教程 Java 程序设计 项目 案例 教程 课件 _Java 面向 对象
- 资源描述:
-
1、Java面向对象程序设计 第3章 Java面向对象任务目的掌握Java类的定义掌握Java类的成员变量和成员方法的定义掌握对象的创建和使用掌握构造方法创建和使用掌握类的继承掌握类的访问控制修饰符掌握类的对象转型掌握类的多态掌握抽象类和接口面向对象语言的特征计算机编程语言经历了由低级到高级语言的转变过程,包括机器语言、汇编语言、高级语言,其中高级语言包括面向过程的语言和面向对象的语句,典型的面向过程的语言C语言,面向对象语言是Java语言,对象是Java语言的核心,Java语言中体现了“万事万物皆对象”。面向对象语言有三大特征:封装、继承和多态。封装性将数据和数据的操作放在一起形成一个封装体,这
2、个封装体它可以提供对外部的访问,同时对内部的具体细节也实现了隐藏,也能控制外部的非法访问。封装体的基本单位是类,对象是类的实例,一个类的所有对象都具有相同的数据结构和操作代码。继承性是面向对象的第二个特性,它支持代码重用,继承可以在现有类的基础上进行扩展从而形成一个新的类,它们之间成为基类和派生类的关系,派生类不仅具有基类的属性特征和行为特征而且还可以添加新的特征。采用继承的机制来组织、设计系统中的类,可以提高程序的抽象程度,使之更接近于人类的思维方式,同时也通过继承能较好地实现代码重用,可以提高程序开发效率,降低维护的工作量。多态性使得多个不同的对象接收相同的消息却产生不同的行为,它大大提高
3、了程序的抽象程度和简洁性,更重要的是,它最大限度地降低了类和程序模块之间的耦合性,提高了类模块的封闭性,使得它们不需了解对方的具体细节,就可以很好地共同工作。这个优点对于程序的设计、开发和维护都有很大的好处。类客观世界物以类聚,将一些具有共同特征的的实体放在一起,形成类,如“学生”类、“教师”类、“玩具”类等。面向对象的程序是用来解决实际问题的,要求程序和现实世界中的实体具有一致性,那怎样将客观世界的实体转变为计算机程序设计语言,这涉及到“具体”到“抽象”的过程,将实现世界中的物体类的共性的特征和行为抽取出来,用计算机的程序设计语言class类来表示。类是用于描述同一类型的对象的一个抽象的概念
4、,类中定义了这一类对象所具有的静态(成员变量)和动态(成员方法)属性。它是一种新的数据类型,具有封装性。类的定义类是Java程序的基本单位,在Java中定义一个类,一般包括类的声明和类体两个部分。其一般格式为:类声明/类体1、类声明:一般格式为:修饰符 class 类名 extends 基类名 implements 接口名其中 部分是可选的,修饰符包括访问控制符和非访问控制符,class是Java的关键字,表示这是一个类的定义,类名必须是合法标识符,且首字母一般约定为大写字母,类名指定一个有意义的名称,extends表示继承,该类要继承基类名,implements表示该类还要实现其他接口。2、
5、类体:类体就是类声明后 里面的部分,一般包括类的成员变量和类的成员方法的定义。3、最简单的类的定义形式如下:class 类名/成员变量定义部分;/成员方法定义部分;定义一个学生类:class Student/定义成员变量String strName;/学生姓名String strNo;/学生学号int iAge;/学生年龄double dScore;/学生成绩/定义成员方法void display()System.out.println(学生的姓名:+strName+的成绩+dScore);类的成员变量与成员方法3.3.2.2类的成员变量与成员方法定义一个类时,在类体中可以有成员变量和成员方法
6、。成员变量,它体现的是对象的静态属性,而成员方法体现的是对象的动态行为。1、成员变量:在类中定义的变量,也称为属性。成员变量定义的格式:修饰符 数据类型 成员变量;1)修饰符可以使访问控制符,也可以是static、final等关键字,数据类型可以是基本数据类型,也可以是引用数据类型。2)在定义类的成员变量时可以对其初始化,如果不对其初始化,Java使用默认值对其初始化。其结果如表3.1所示:表3.1 Java类的成员的变量默认初始值成员变量类型成员变量类型默认取值默认取值bytebyte0 0shortshort0 0intint0 0longlong0L0Lcharcharu0000u000
7、0floatfloat0.0F0.0Fdoubledouble0.00.0booleanbooleanfalsefalse所有引用类型所有引用类型nullnull3)成员变量的作用范围为整个类体2、成员方法:1)成员方法的定义:Java的类的成员方法类似于其他语言的函数,是一段完成特定功能的代码段。成员方法的定义格式:修饰符 返回值类型 方法名(形式参数列表)/方法体;方法定义的第一行称为方法的声明,里面称为方法体。修饰符可以使访问控制符,也可以是static、final等关键字,在定义方法时要指明返回类型,返回值类型可以基本数据类型,也可以引用数据类型,如果方法不返回值,则应显示式声明返回类
8、型为void,如果一个方法需要接受外界输入的数据,则要定义形式参数,如果不需要外界输入数据,形式参数列表可以为空。2)形式参数列表的定义格式:数据类型1 变量名1,数据类型2 变量名2,数据类型n 变量名n例如:public void setName(String Name)strName=Name;public void display()System.out.println(学生的姓名:+strName+的成绩+dScore);3)方法的返回值语句 return语句方法体采用return语句终止方法的运行并指定要返回的数据,该值会返回给调用者。语法格式:return 表达式;return关
9、键字用于结束方法以及返回方法指定的类型的值,当方法的返回值为void时,return及其返回值可以省略。4)成员方法的使用:成员方法的调用一般通过对象来调用,调用的语法格式为:对象名.方法名(实参列表);方法调用中实参列表数据类型和个数和形参列表数据一一对应。【例3-1】:通过案例掌握类的方法的定义和调用。class Student/定义成员变量String strName;/学生姓名String strNo;/学生学号int iAge;/学生年龄double dScore;/学生成绩/定义成员方法void display()System.out.println(学生姓名:+strName+,
10、学号:+strNo+,年龄:+iAge+,成绩+dScore);public class Demo3_01 public static void main(String args)Student s1=new Student();s1.strName=余华;s1.strNo=1001;s1.iAge=18;s1.dScore=90.2;s1.display();程序输出结果:对象 从类是一种新的数据类型,封装了对象的静态属性和行为,类可以看成某一类对象的模板,对象可以看成类的一个具体实例。对象的创建由类创建对象,创建对象一般分为两个部分:1、声明对象名类名 对象名;2、给对象实例化:对象名=n
11、ew 类名(参数列表);用new来创建对象并实例化,为对象申请空间,分配内存。类名(参数列表)是调用类的构造方法,给对象进行初始化。以上1、2两个部分可以合并:类名 对象名=new 类名(参数列表);为学生类创建对象yuhua Student yuhua=new Student();对象的使用创建对象后,对象就拥有自己的成员变量和成员方法,对象通过“.”号来调用成员变量和成员方法。对象名.成员变量名;对象名.成员方法名(实参);实参调用方法时实际传给方法的数据。【例3-2】:通过案例掌握类的定义和对象的创建。class Person/成员变量的定义private int id;private
12、int age=20;/成员方法的定义public void setId(int ParaId)id=ParaId;public int getID()return id;public void setAge(int ParaAge)age=ParaAge;public int getAge()return age;public void display()System.out.println(id+:+age);publicclass Demo3_02 public static void main(String args)Person p1=new Person();p1.setId(10
13、01);p1.setAge(25);p1.display();程序输出结果:例3-3】:通过案例掌握类的成员变量和成员方法的调用。定义一个点类,在该类里定义二个方法,一个实现实现点到原点之间的距离,另一个实现任意两个点之间的距离,创建对象调用该方法并输出结果。class PointClassint x;int y;PointClass(int _x,int _y)x=_x;y=_y;public double disO()return Math.sqrt(x*x+y*y);public double dis(PointClass p2)return Math.sqrt(x-p2.x)*(x-p
14、2.x)+(y-p2.y)*(y-p2.y);public class Demo3_03 public static void main(String args)PointClass p1=new PointClass(3,4);double d1=p1.disO();System.out.println(p1到原点的距离:+d1);PointClass p2=new PointClass(5,9);double d2=p1.dis(p2);System.out.println(p1到p2的距离:+d2);程序运行的结果:类的构造方法在类体中有一种特殊的方法,即构造方法,它在创建对象时自动调用
15、,构造方法的作用对对象进行初始化。构造方法具有如下特点:1)构造方法名与类名相同。2)构造方法没有返回值,返回值类型为空,即使void也不写。3)构造方法可以有多个形式参数,也可以无参。4)一个类中可以同时定义多个构造方法,调用构造方法时,系统会根据参数个数及类型寻找匹配的构造方法。5)如果类中没有定义构造方法,系统会提供默认一个无参的构造方法,其方法体为空,形式如下:类名()6)如果类中已经定义构造方法,系统不再提供默认无参构造方法。7)构造方法的调用与成员方法的调用不同,它是在创建对象时自动调用,即格式:new 类名(参数);【例3-4】:通过案例掌握构造方法的定义和调用。class Pe
16、rsonString name;int age;Person()name=Lisi;age=20;Person(String strName,int iAge)name=strName;age=iAge;Person(String strName)name=strName;age=20;publicclass Demo3_04 publicstaticvoid main(String args)Person p1=new Person();/调用第一个构造方法 Person p2=new Person(zhao,20);/调用第二个构造方法 Person p3=new Person(zhao)
17、;/调用第三个构造方法 方法的重载方法重载通常用于完成一组任务相似,但参数的不同的方法。Java中方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择相应的方法。方法的重载具有的特点:1、方法名相同2、方法的参数不同,参数不同包括:参数的个数或者类型不同3、跟方法的返回值无关,返回值类型可以相同也可以不相同【例3-5】:通过案例掌握方法重载的定义和调用。class Person private int id;private int age;Person()id=1001;age=25;Person(int _id,int _age)id=_id;ag
18、e=_age;public int getAge()return age;public void setAge(int i)age=i;public int getId()return id;void info()System.out.println(my id is:+id);void info(String t)System.out.println(t+id +id);public class Demo3_05 public static void main(String args)Person p=new Person();Person p2=new Person(2,500);p.in
19、fo();p.info(ok);程序输出的结果:方法的重载在调用时,根据实参和形参的对应关系找到类型相匹配的关系,如果没有找到类型相匹配的方法,Java编译器会找可以兼容的类型来调用(根据数据类型转换原则,自动转换的数据类型可以来调用)。例如:【例3-6】:通过案例掌握方法重载,如果没有找到类型匹配的方法,通过兼容的类型来调用。class Area double getArea(double r)return 3.14*r*r;double getArea(float x,int y)return x*y;float getArea(int x,float y)return x*y;publi
20、c class Demo3_06public static void main(String args)Area a1=new Area();System.out.println(a1.getArea(2);/调用第一个getArea方法 System.out.println(a1.getArea(2.5f,3);/调用第二个getArea方法 System.out.println(a1.getArea(3,2.5f);/调用第三个getArea方法 程序运行的结果:a1对象调用getArea的三个方法,其中a1.getArea(2)调用第一个getArea方法,根据数据类型转换原则,2数值默
21、认是int整型常量,将整型常量转换为double型数据类型,属于自动转换。如果将a1.getArea(2.5f,3)中的2.5后面的f去掉,则编译不成功,因为2.5数值属于double型数据,将double型数据赋给float型数据,需要强制转换。this关键字this是Java的一个关键字,表示当前对象的引用,主要应用在:1、this调用本类的成员变量:this可以调用本类的成员变量,其语法格式:this.成员变量 类的成员变量和方法中的形式参数重名的情况下,采用this关键字来区别。class Rectangleprivate double length;private double wi
22、dth;Rectangle(double length,double width)this.length=length;this.width=width;this.length表示当前对象this访问成员变量length,而不是形式参数变量length。2、使用、使用this调用本类的其他构造方法调用本类的其他构造方法在构造方法中用在构造方法中用this调用本类中的其他构造方法,此时调用本类中的其他构造方法,此时this指代本类类名,调用时要放在构造方法的首行。其指代本类类名,调用时要放在构造方法的首行。其语法格式:语法格式:this(参数列表参数列表);此处的参数列表和被调用的构造方法参数列
23、表是匹配的,如下例:此处的参数列表和被调用的构造方法参数列表是匹配的,如下例:class Person intage;String name;public Person()public Person(intage)this.age=age;public Person(int age,String name)this(age);/调用了第二个构造方法调用了第二个构造方法this.name=name;3、this可以看作一个变量,它的值是当前对象的引用可以看作一个变量,它的值是当前对象的引用【例【例3-7】:通过案例掌握】:通过案例掌握this关键字的使用。关键字的使用。publicclass D
24、emo3_07 int i=0;Demo3_07(int i)this.i=i;Demo3_07 increament()i+;return this;/返回的是当前的对象返回的是当前的对象 void display()System.out.println(i=+i);public static void main(String args)Demo3_07 demo07=new Demo3_07(100);demo07.increament().increament().display();程序运行结果程序运行结果:static关键字static是Java的关键字,static表示“全局”或者
25、“静态”的意思,可以用来修饰类的成员变量和类的成员方法。1、修饰类的成员变量:在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。语法格式:static 数据类型 变量名;2、修饰类的成员方法:用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可以访问非static的成员。可以通过对象引用或类名(不需要实例化)访问静态成员。3、语法格式:修饰符 static 返回值类型 方法名(参数列表)/方法体4、static的使用【例3-8】:通过案例掌握
展开阅读全文