java语言程序设计第2章.ppt
《java语言程序设计第2章.ppt》由会员分享,可在线阅读,更多相关《java语言程序设计第2章.ppt(123页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章类与对象的基本概念类与对象的基本概念JAVA语言程序设计1JAVA语言程序设计08信息管理目录目录2.1 面向对象的程序设计方法概述面向对象的程序设计方法概述2.2 类与对象类与对象 2.3 对象初始化和回收对象初始化和回收 2.4 应用举例应用举例 2.5 UML简介简介2.6 本章小节本章小节2JAVA语言程序设计08信息管理2.1 面向对象的程序设计方法概述面向对象的程序设计方法概述l面向对象的程序设计面向对象的程序设计 四大重要特征四大重要特征l抽象l封装l继承l多态 3JAVA语言程序设计08信息管理l对象对象万物皆对象。两大构成要素:属性(数据)、行为(方法)l类类将属
2、性及行为相同或相似的对象抽象为类对象是类的实例 面向对象程序设计方法概述2.1 面向对象的程序设计方法概述面向对象的程序设计方法概述(续续)4JAVA语言程序设计08信息管理l例:例:钟表l数据(属性)int Hour;int Minute;int Second;l方法(行为)SetTime();ShowTime();面向对象程序设计方法概述5JAVA语言程序设计08信息管理l例:例:人l数据(属性)char*name;char*gender;int age;int id;l方法(行为)生物行为Eat(),Step(),社会行为Work(),Study(),面向对象程序设计方法概述6JAVA语
3、言程序设计08信息管理2.2.1 类的声明类的声明l声明形式声明形式public abstract|final class 类名称类名称 extends 父类名称父类名称 implements 接口名称列表接口名称列表 成员变量(属性);成员变量(属性);成员方法(行为);成员方法(行为);类与对象7JAVA语言程序设计08信息管理l关键字关键字Classl表明其后声明的是一个类。extendsl如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后implementsl如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后2.2.1 类的声明类的声
4、明(续续)类与对象8JAVA语言程序设计08信息管理l修饰符修饰符可以有多个,用来限定类的使用方式publicl表明此类为公有类abstractl指明此类为抽象类finall指明此类为终结类 l类声明体类声明体变量成员声明及初始化l可以有多个方法声明及方法体l可以有多个2.2.1 类的声明类的声明(续续)类与对象9JAVA语言程序设计08信息管理l钟表类钟表类public class Clock /成员变量(属性)成员变量(属性)int hour;int minute;int second;/成员方法(行为)成员方法(行为)public void setTime(int newH,int ne
5、wM,int newS)hour=newH;minute=newM;second=news;public void showTime()System.out.println(hour+:+minute+:+second);2.2.1 类的声明类的声明(续续)例例2_1类与对象10JAVA语言程序设计08信息管理l变量和对象变量和对象变量除了存储基本数据类型的数据,还能存储对象的引用,用来存储对象引用的变量称为引用变量类的对象也称为类的实例2.2.2 对象的声明与引用对象的声明与引用类与对象11JAVA语言程序设计08信息管理l对象的声明对象的声明格式类名 变量名:Clock aclock;声明
6、一对象时并没有开辟内存空间2.2.2 对象的声明与引用对象的声明与引用(续续)类与对象12JAVA语言程序设计08信息管理l对象的创建对象的创建生成实例的格式:new()例如:aclock=new Clock()其作用是:l在内存中为此对象分配内存空间对象可以被赋以空值例如:aclock=null;2.2.2 对象的声明与引用对象的声明与引用(续续)类与对象13JAVA语言程序设计08信息管理2.2.3 数据成员(成员变量)数据成员(成员变量)l成员变量成员变量分为实例变量和类变量类与对象14JAVA语言程序设计08信息管理声明格式public|protected|private static
7、 finaltransient volatile变量数据类型变量数据类型 变量名变量名1=变量初值变量初值,变量名变量名2=变量初值变量初值,;格式说明lpublic、protected、private 为访问控制符lstatic指明这是一个静态成员变量lfinal指明变量的值不能被修改ltransient指明变量是临时状态lvolatile指明变量是一个共享变量2.2.3 数据成员数据成员(续续)类 与 对 象15JAVA语言程序设计08信息管理l实例变量实例变量没有static修饰的变量称为实例变量用来存储对象需要的属性信息,不同对象属性值可能会不同可通过下面的表达式访问对象属性的值.2.
8、2.3 数据成员数据成员(续续)实例变量实例变量类与对象16JAVA语言程序设计08信息管理l声明一个表示圆的类,保存在文件声明一个表示圆的类,保存在文件Circle.java 中。中。然后编写测试类,保存在文件然后编写测试类,保存在文件ShapeTester.java中,并与中,并与Circle.java放在相同的目录下放在相同的目录下public class Circle int radius;public class ShapeTester public static void main(String args)Circle x;x=new Circle();System.out.pri
9、ntln(x);System.out.println(radius=+x.radius);2.2.3 数据成员数据成员(续续)例例2_2类与对象17JAVA语言程序设计08信息管理l编译后运行结果如下:编译后运行结果如下:Circle26b249radius=0l解释解释之后的数值为x所指的对象的存储地址x的值及对象的状态如图2.2.3 数据成员数据成员(续续)例例2_2运行结果运行结果类与对象18JAVA语言程序设计08信息管理将两个文件合并为将两个文件合并为ShapeTester.java。注意:一个文件中只能有一个注意:一个文件中只能有一个public 类类,该类中可以该类中可以包含包含
10、main函数,且文件名与该类名相同。函数,且文件名与该类名相同。class Circle int radius;public class ShapeTester public static void main(String args)Circle x;x=new Circle();System.out.println(x);System.out.println(radius=+x.radius);19JAVA语言程序设计08信息管理l声明一个表示矩形的类声明一个表示矩形的类,保存在保存在Rectangle.java中;中;编写测试类,保存在编写测试类,保存在ShapeTester.java中,
11、二文中,二文件保存在相同的目录下件保存在相同的目录下public class Rectangle double width=10.128;double height=5.734;public class ShapeTester public static void main(String args)Circle x;Rectangle y;x=new Circle();y=new Rectangle();System.out.println(x+y);2.2.3 数据成员数据成员(续续)例例2_3类与对象20JAVA语言程序设计08信息管理l编译后运行结果如下:编译后运行结果如下:Circle
12、82f0db Rectangle92d342l解释解释Circle及Rectangle类对象的状态如图2.2.3 数据成员数据成员(续续)例例2_3运行结果运行结果类与对象21JAVA语言程序设计08信息管理l对对ShapeTester类进行修改,使两个实例具有不同类进行修改,使两个实例具有不同的实例变量值的实例变量值public class ShapeTester public static void main(String args)Circle x;Rectangle y,z;x=new Circle();y=new Rectangle();z=new Rectangle();x.rad
13、ius=50;z.width=68.94;z.height=47.54;System.out.println(x.radius+y.width+z.width);2.2.3 数据成员数据成员(续续)例例2_3修改修改类与对象22JAVA语言程序设计08信息管理l编译后运行结果如下:编译后运行结果如下:50 10.128 68.94l解释解释Circle及Rectangle类对象的状态如图2.2.3 数据成员数据成员(续续)修改后运行结果修改后运行结果类与对象23JAVA语言程序设计08信息管理l地址簿程序地址簿程序一个人的地址通常包括以下信息:姓名,省份,城市,街道,门牌号,邮政编码采用过程化
14、的程序设计方法,使用简单变量存储,则存储两个人地址的代码如下2.2.3 数据成员数据成员(续续)例例2_4类与对象24JAVA语言程序设计08信息管理public static void main(String args)String name1,name2;int gateNumber1,gateNumber2;String streetName1,streetName2;String city1,city2;String province1,province2;String postalCode1,postalCode2;name1=Zhang Li;gateNumber1=15;stre
15、etName1=Tsinghua East Road;city1=Beijing;province1=“Beijing;postalCode1=100084;name2=Li Hong;gateNumber2=2;streetName2=BeiNong;city2=Beijing;province2=Beijing;postalCode2=102206;/.do something interesting 2.2.3 数据成员数据成员(续续)例例2_4类与对象25JAVA语言程序设计08信息管理采用面向对象的程序设计方法,则需要首先声明Address类如下public class Addres
16、s String name;int gateNumber;String streetName;String city;String province;String postalCode;/方法成员略 2.2.3 数据成员数据成员(续续)例例2_4类与对象26JAVA语言程序设计08信息管理主方法改写如下public static void main(String args)Address address1=new Address(),address2=new Address();address1.name=“Zhang Li;address1.streetNumber=15;address1.
17、streetName=“Tsinghua East Road;address1.city=“Beijing;address1.province=“Beijing;address1.postalCode=“100084;address2.name=“Li Hong;address2.streetNumber=2;address2.streetName=“BeiNong;address2.city=“Beijing;address2.province=“Beijing;address2.postalCode=“102206;/.do something interesting 2.2.3 数据成员
18、数据成员(续续)例例2_4类与对象27JAVA语言程序设计08信息管理l类变量类变量也称为静态变量,声明时需加static修饰符不管类的对象有多少,类变量只存在一份。被所有对象共享。引用格式.2.2.3 数据成员数据成员(续续)类变量类变量类与对象28JAVA语言程序设计08信息管理l对于一个圆类的所有对象,计算圆的面积对于一个圆类的所有对象,计算圆的面积时,都需用到时,都需用到的值,可在的值,可在Circle类的声明类的声明中增加一个类属性中增加一个类属性PIpublic class Circle static double PI=3.14159265;int radius;当我们生成Cir
19、cle类的对象时,在每一个对象中并没有存储PI的值,PI的值存储在类中2.2.3 数据成员数据成员(续续)例例2_5类与对象29JAVA语言程序设计08信息管理对类变量进行测试public class ClassVariableTester public static void main(String args)Circle x=new Circle();System.out.println(x.PI);System.out.println(Circle.PI);Circle.PI=3.14;System.out.println(x.PI);System.out.println(Circle.
20、PI);测试结果3.141592653.141592653.143.142.2.3 数据成员数据成员(续续)例例2_5运行结果运行结果类与对象30JAVA语言程序设计08信息管理l声明一个声明一个Point类,有两个私有变量保存点类,有两个私有变量保存点坐标,一个类变量保存已有点的个数坐标,一个类变量保存已有点的个数public class Point private int x;private int y;public static int pointCount=0;public Point(int x,int y)this.x=x;this.y=y;pointCount+;2.2.3 数据
21、成员数据成员(续续)Point.java类与对象31JAVA语言程序设计08信息管理l测试类测试类ex2_4class ex2_4 public static void main(String args)Point p=new Point(1,1);System.out.println(p.pointCount);Point q=new Point(2,2);System.out.println(q.pointCount);System.out.println(q.pointCount=Point.pointCount);System.out.println(Point.pointCount)
22、;2.2.3 数据成员数据成员(续续)Point类测试类测试类与对象32JAVA语言程序设计08信息管理l测试结果测试结果12true2 2.2.3 数据成员数据成员(续续)Point类测试结果类测试结果类与对象33JAVA语言程序设计08信息管理l实例变量和类变量都可被声明为实例变量和类变量都可被声明为finallfinal实例变量必须在每个构造方法结实例变量必须在每个构造方法结束之前赋初值,以保证使用之前会被束之前赋初值,以保证使用之前会被初始化初始化lfinal类变量必须在声明的同时初始化类变量必须在声明的同时初始化2.2.3 数据成员数据成员(续续)final修饰符修饰符类与对象34J
23、AVA语言程序设计08信息管理2.2.4 方法成员(成员方法)方法成员(成员方法)l成员方法成员方法定义类的行为l一个对象能够做的事情l我们能够从一个对象取得的信息可以没有,也可以有多个;一旦在类中声明了方法,它就成为了类声明的一部分分为实例方法和类方法类与对象35JAVA语言程序设计08信息管理声明格式public|protected|private static finalabstract native synchronized返回类型返回类型 方法名方法名(参数列表参数列表)throws exceptionList方法体方法体2.2.4 方法成员方法成员(续续)声明格式声明格式类与对象3
24、6JAVA语言程序设计08信息管理格式说明l方法修饰public、protected、private 为存取控制符static指明方法是一个类方法final指明方法是一个终结方法abstract指明方法是一个抽象方法native用来集成java代码和其它语言的代码synchronized用来控制多个并发线程对共享数据的访问2.2.4 方法成员方法成员(续续)格式说明格式说明类与对象37JAVA语言程序设计08信息管理格式说明(续)l返回类型方法返回值的类型,可以是任意的Java数据类型当不需要返回值时,返回类型为voidl参数类型简单数据类型,引用类型(数组、类或接口)可以有多个参数,也可以没
25、有参数,方法声明时的参数称为形式参数l方法体方法的实现包括局部变量的声明以及所有合法的Java指令局部变量的作用域只在该方法内部lthrows exceptionList用来处理异常2.2.4 方法成员方法成员(续续)格式说明格式说明类与对象38JAVA语言程序设计08信息管理l方法调用方法调用调用格式.(参数列表)参数传递l值传递:参数类型为基本数据类型时l引用传递:参数类型为对象类型或数组时2.2.4 方法成员方法成员(续续)方法调用方法调用类与对象39JAVA语言程序设计08信息管理l 实例方法实例方法表示特定对象的行为声明时前面不加static修饰符2.2.4 方法成员方法成员(续续)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言程序设计
限制150内