J2EEWeb开发技术(第3章 Java面向对象编程)2011年1月.pdf
《J2EEWeb开发技术(第3章 Java面向对象编程)2011年1月.pdf》由会员分享,可在线阅读,更多相关《J2EEWeb开发技术(第3章 Java面向对象编程)2011年1月.pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1Ch3-1第三章Java面象对象编程3.1 面向对象编程常用术语面向对象编程常用术语3.8 异常处理异常处理3.2 Java类与对象类与对象3.3 类中的成员变量类中的成员变量3.4 类中的成员函数类中的成员函数3.5 继承与抽象类继承与抽象类3.6 接口接口3.7 包包Ch3-23.1 面象对象编程常用术语面象对象编程常用术语1.OOP:Oriented Object Programming面象对象编程2.类:类:class类是一种数据结构,它将应用程序需要处理和表达的事物划分为若干数据项(成员变量成员变量或数据域数据域)来描述,然后将处理这些数据项的基本方法方法(成员函数成员函数)与这些
2、数据项捆绑在一起进行封装封装(Encapsulation),形成一个类。Ch3-33.1 面象对象编程常用术语(续面象对象编程常用术语(续1)若干数据项若干数据项也称为域/属性/成员变量类声明类声明若干方法若干方法也称为成员函数Ch3-43.1 面象对象编程常用术语(续面象对象编程常用术语(续2)3.对象:对象:object一个客观事物。对象的数据描述在程序中用变量实现;程序中的一切变量都可称为对象。4.实例:实例:instance对象的数据描述在存储器中的存储实现。Java的全部变量(variable)有两种类型:占用存储的,称为实例实例(实体实体)型变量型变量;不占存储的,称为引用型变量引
3、用型变量。Ch3-53.1 面象对象编程常用术语(续面象对象编程常用术语(续3)类与对象的例子)类与对象的例子学生类:类名:Student数据:姓名;学号;性别;专业;生日;状态;等等方法:登记;注册;注销;查询;等等声明对象变量:Student a,b;/学生学生a和和b4.多态多态:polymorphism在Java中,多态主要是指方法(成员函数)的重载重载/覆盖覆盖(reload/override),即允许定义同名方法,但方法的自变量(形参)的数据类型或者个数不一样。Ch3-63.1 面象对象编程常用术语(续面象对象编程常用术语(续4 完)完)5.继承继承:inheritance子类拥有
4、父类父类(超类)的部分或者全部数据成员和函数成员,即这些成员无需在子类中重复定义,只需从父类继承。同时,子类还可以定义自己的数据成员和函数成员。6.封装封装:encapsulation封装主要是指类的对象尽量隐藏自己的“私有”信息(数据成员),即对其它类的方法这些信息是不可访问的,除非通过调用该类的公有成员函数。封装的目的是减少类与类之间的耦合度耦合度,提高软件可靠性。2Ch3-73.2 Java类与对象类与对象3.2.1 Java类的定义类的定义public abstract|final class 类名extends 父类名 implements 接口名 成员变量(域)定义成员函数(方法)
5、定义public:公有类,该类可以被所属包以外的类访问;缺省缺省表示该类只能被本包中的类访问。Ch3-83.2 Java类与对象(续类与对象(续1)abstract:抽象类。抽象类不能用实例化。final:最终类。最终类不能派生子类。extends 与 implements 见后续章节。3.2.2 声明对象与创建对象声明对象与创建对象Syntax:类名 对象名1,对象名2,.;例例:Student a,b;说明说明:上述语法仅声明了对象标识符,并未真正地创建对象(即为对象建立存储空间)。Ch3-93.2 Java类与对象(续类与对象(续2)创建对象实例创建对象实例Syntax:对象名=new
6、类名类名(初始化参数);例例:Student a;a=new Student();Student b=new Student();说明说明:创建实例时,成员初值按以下顺序确定:Student 实例1Student 实例2ab远程堆远程堆Ch3-103.2 Java类与对象(续类与对象(续3)构造函数中有赋值赋值吗?成员变量声明时有初始化初始化吗?YES表2.1 默认值默认值NONOYESCh3-113.2 Java类与对象(续类与对象(续4)例例3.1 定义表示平面坐标点的类Point,输入坐标点,计算并输出两点之间的距离。import java.io.*;/C3_1.javaimport j
7、ava.lang.Math;import java.util.Scanner;class Point double x,y=0;public Point()/无参构造函数无参构造函数public Point(double x,double y)/双参构造函数双参构造函数 this.x=x;this.y=y;Ch3-123.2 Java类与对象(续类与对象(续5)public void input()/定义输入本坐标点的方法定义输入本坐标点的方法 Scanner in=new Scanner(System.in);x=in.nextDouble();y=in.nextDouble();publi
8、c void output()System.out.print(+x+,+y+);3Ch3-133.2 Java类与对象(续类与对象(续6)public class C3_1 public static double dist(Point a,Point b)double dx=a.x-b.x,dy=a.y-b.y;return Math.sqrt(dx*dx+dy*dy);Ch3-14public static void main(String args)Point a=new Point(),b=new Point(1,2),c=new Point();System.out.print(a
9、 point=);a.output();System.out.println();System.out.print(b point=);b.output();System.out.println();System.out.println(Input c point,format:x y);c.input();System.out.print(c point=);c.output();System.out.println();double d=dist(b,c);System.out.println(The distance of b from c is:+d);/该程序在该程序在MyEclip
10、se 8.6中的运行画面如下中的运行画面如下:3.2 Java类与对象(续类与对象(续7)Ch3-153.2 Java类与对象(续类与对象(续8)Ch3-163.2 Java类与对象(续类与对象(续9)3.2.3 类变量的引用特性类变量的引用特性当类的实体对象用于赋值对象用于赋值以及函数参数传递函数参数传递时,类的成员并没有进行复制,而仅仅是实现引用(引用(Reference)。引用对象名(被赋值的对象名或者形参)仅仅是一个代号,没有具体的存储空间,它只是被引用的实体对象的一个别名。对引用对象名进行的任何操作都相当于对被引用的实际对象进行了操作。Ch3-173.2 Java类与对象(续类与对象
11、(续10)1.程序设计语言变量的三种类型程序设计语言变量的三种类型JavaC+示例示例变量类型变量类型所有类变量所有类变量如:Integer a;Double b;int&a;引用型变量引用型变量无无int a;指针变量指针变量所有基本数据类型变量所有基本数据类型变量如:int a;double b;int a;实体型变量实体型变量Ch3-183.2 Java类与对象(续类与对象(续11)2.什么是引用(什么是引用(Reference)?)?(1)类型为T的引用型变量,该变量实际上没有存储T类型数据的存储空间,而只存储存储一个指向T类型数据的索引(索引的实质是一个内存地址),该索引指向的T类型
12、数据称为被引用变量被引用变量;(2)对引用型变量进行除赋值以外的一切操作除赋值以外的一切操作,相当于对被引用变量进行操作;(3)用实体变量向引用型变量赋值赋值,实体变量的值并没有被复制,而只是将该实体变量的索引存入引用型变量。4Ch3-193.Java类变量都是(隐式声明为)引用型变量例子类变量都是(隐式声明为)引用型变量例子1:Double a=new Double(1.5),b=a,c=b;double x=2.5,y=x,z=y;3.2 Java类与对象(续类与对象(续12)abc1.52.52.52.5xyz引用型类变量引用型类变量a,b,c 与实体型普通变量与实体型普通变量x,y,z
13、的存储差异的存储差异Ch3-203.2 Java类与对象(续类与对象(续13)例子例子2:两个平面直角坐标点作向量加法的函数。class Point int x,y;public Point(int x,int y)this.x=x;this.y=y;Point add(Point a,Point b)Point c=new Point();c.x=a.x+b.x;c.y=a.y+b.y;return c;主程序调用形式主程序调用形式:Point p=add(a,b);(4,6)a(1,2)b(3,4)p主程序中变量子程序中变量abcCh3-214.比较类变量相等比较类变量相等(1)引用是否相
14、等的比较引用是否相等的比较(用用=运算符运算符)(2)数据成员是否相等的比较数据成员是否相等的比较(equals成员函数成员函数)例例3.4:Double a=new Double(1.5),b=a;Double c=new Double(1.5);则有 a=b 值为 truea=c 值为 falsea.equals(b)值为 truea.equals(c)值为 true3.2 Java类与对象(续类与对象(续14)a1.5b1.5cCh3-225.类变量的默认初值:类变量的默认初值:null关键字null表示空引用,它是类变量的默认初值;null可以向类变量赋值或者与类变量比较相等。如:如:
15、Point a=null;if(a=null)6.Java类变量全部是引用类型的优点类变量全部是引用类型的优点(1)比指针更安全比指针更安全(2)节省类变量赋值操作的时间节省类变量赋值操作的时间(3)节省类变量的存储空间节省类变量的存储空间3.2 Java类与对象(续类与对象(续15)Ch3-237.Java类变量全部是引用类型的缺点赋值操作(包括函数参数传递与返回值)无法实现类对象实体的复制。例:怎样实现类对象实体的整体拷贝?方法类变量全部是引用类型的缺点赋值操作(包括函数参数传递与返回值)无法实现类对象实体的复制。例:怎样实现类对象实体的整体拷贝?方法:拷贝构造函数拷贝构造函数+new命令
16、命令;拷贝赋值成员函数拷贝赋值成员函数public Point(Point p)x=p.x;y=p.y;/类类Point的拷贝构造函数的拷贝构造函数public set(Point p)x=p.x;y=p.y;/拷贝赋值成员函数拷贝赋值成员函数Point a=new Point(1,2),b=new Point(a);/a,b 指向两个实体对象指向两个实体对象a.set(b);/将将b引用的对象数据成员拷贝到引用的对象数据成员拷贝到a引用的对象中引用的对象中3.2 Java类与对象(续类与对象(续16)Ch3-248.Java基本数据类型变量全部是实体类型的缺点无法实现如下所示两个变量交换值的
17、函数基本数据类型变量全部是实体类型的缺点无法实现如下所示两个变量交换值的函数/两个变量交换值的两个变量交换值的C+函数函数void swap(int&a,int&b)int temp=a;a=b;b=temp;/两个变量交换值的两个变量交换值的C函数函数void swap(int p,int q)int temp=p;p=q;q=temp;3.2 Java类与对象(续类与对象(续17完)完)5Ch3-25例例3.2 单链表的建立与输出。说明:本例采用前插法说明:本例采用前插法(先入后出法建立单链表先入后出法建立单链表)import java.io.*;/C3_5.javaclass Node
18、/定义单链表结点数据结构定义单链表结点数据结构 int data;Node next;public Node(int ch,Node new_node)data=ch;next=new_node;/引用赋值,不新建对象引用赋值,不新建对象3.2 Java类与对象(续类与对象(续19)Ch3-26public class C3_2 public static void main(String args)Node h=new Node(0,null),p;/h为附加头结点为附加头结点for(int i=1;i0)return sum/num;return 0;静态初始化器可去掉吗?静态初始化器可去
19、掉吗?函数前的函数前的static可去掉吗?可去掉吗?Ch3-343.3 类中的成员变量类中的成员变量(续续6)protected String name;/name为引用型为引用型,初值为初值为nullprotected double score;public Stu(String na,double sc)/构造函数构造函数 name=new String(na);score=sc;/姓名实例化姓名实例化sum+=score;num+;/每建立一个学生,成绩累加,人数自加每建立一个学生,成绩累加,人数自加1Ch3-353.3 类中的成员变量类中的成员变量(续续7)public class
20、C3_3 public static void main(String args)Stu a=new Stu3;/元素初值为元素初值为nulla0=new Stu(张三,85);/实例化a1=new Stu(李四,58);a2=new Stu(王五,70.5);/*或者如下所示或者如下所示Stu a=new Stu(“张三张三”,85),new Stu(李四李四,58),new Stu(王五王五,70.5);*/Ch3-363.3 类中的成员变量类中的成员变量(续续8)for(int i=0;i3;i+)System.out.println(ai.name+ai.score);System.o
21、ut.println(total=+Stu.num+v=+Stu.getAvScore();本例学习要点本例学习要点:a.静态变量的定义、初始化与使用b.类的引用变量与实例变量c.类的静态变量与非静态变量(实例变量)的设置原则d.类对象数组的定义与实例化方法Stu.num可以写成可以写成a0.num吗?吗?a1.num呢?呢?7Ch3-373.3 类中的成员变量类中的成员变量(续续9)3.3.3 最终域最终域使用final关键字修饰的成员变量,它的值在程序运行期间都不能被修改,即不允许向它赋值。例如例如:class Circle public static final double pi=3.
22、1415926;final int c;/c初值为初值为0final也能修饰局部变量,该变量值在模块运行期内不能被修改。Ch3-383.3 类中的成员变量类中的成员变量(续续10)3.3.4 易失域易失域使用volatile关键字修饰的成员变量,它的存储空间和访问权由多个程序(如线程)共享。Ch3-393.4 类中的成员函数类中的成员函数3.4.1 成员函数定义与访问成员函数定义与访问syntax:权限修饰符非权限修饰符 T 函数名(形参)throws 异常列表1.权限修饰符权限修饰符syntax:public|protected|private|private protected说明:说明:
23、同成员变量的访问权限的规定2.非权限修饰符非权限修饰符syntax:static|final|abstract|native|synchronized说明:说明:缺省为一般类型,其它类型见后续课件Ch3-403.4 类中的成员函数类中的成员函数(续续1)3.成员函数的访问方法成员函数的访问方法(1)本类与子类方法中(若权限允许访问)syntax:成员函名(实参列表)(2)其它类的方法中(若权限允许访问)syntax:该类对象名.成员函数名(实参列表)4.throws 见后面的异常处理一节。3.4.2 构造函数名字与类名相同没有返回值允许重载主要完成成员变量初始化工作构造函数名字与类名相同没有返
24、回值允许重载主要完成成员变量初始化工作Ch3-413.4 类中的成员函数类中的成员函数(续续2)例例3.4 类中的内嵌对象与初始化方法。import java.io.*;/C3_4.javaclass Ctime protected int h,m;public Ctime(int h,int m)/参数构造参数构造 this.h=h;this.m=m;public Ctime()/默认构造默认构造public Ctime(Ctime t)h=t.h;m=t.m;/拷贝构造拷贝构造public void output()System.out.println(h+:+m);Ch3-423.4 类
25、中的成员函数类中的成员函数(续续3)class Airplane protected Ctime depart=new Ctime();protected Ctime arrival;public Airplane(Ctime d,Ctime a)depart.h=d.h;depart.m=d.m;/已是实体,不另建已是实体,不另建arrival=new Ctime(a);/不是实体,则新建不是实体,则新建public void output()System.out.print(depart:);depart.output();System.out.print(arrival:);arriva
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EEWeb开发技术第3章 Java面向对象编程2011年1月 J2EEWeb 开发 技术 Java 面向 对象 编程 2011
限制150内