第四章面向对象程序设计优秀课件.ppt
《第四章面向对象程序设计优秀课件.ppt》由会员分享,可在线阅读,更多相关《第四章面向对象程序设计优秀课件.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章面向对象程序设计第1页,本讲稿共70页4.1 4.1 面向对象程序设计的基本概念面向对象程序设计的基本概念l对象对象是客观世界中的某个具体事物。(客车)是客观世界中的某个具体事物。(客车)l事事物物的的特特性性就就是是数数据据(载载客客数数量量、燃燃料料容容量量、耗油均值耗油均值)l事物的行为就是事物的行为就是方法方法 (行驶、起动、刹车)行驶、起动、刹车)数据数据 方法方法l 面向对象的程序设计方法就是将客观事物抽面向对象的程序设计方法就是将客观事物抽象成为象成为“类类”,并通过类的,并通过类的“继承继承”实现软实现软件的可扩充性和可重用性。件的可扩充性和可重用性。对象对象对象对象第2
2、页,本讲稿共70页类和对象类和对象 l类类是是具具有有共共同同特特性性和和行行为为的的事事物物的的抽抽象象,是是一一种种特特殊殊数数据据类类型型。在在类类中中包包含含了了数数据和与数据有关的操作(方法)。据和与数据有关的操作(方法)。l对象对象是类的实例。是类的实例。类类 汽车汽车 对象对象 客车客车抽象实例化第3页,本讲稿共70页面向对象程序设计的核心技术面向对象程序设计的核心技术封装、继承、多态性封装、继承、多态性l通过封装可以隐藏类的实现细节,也可以避免对类中通过封装可以隐藏类的实现细节,也可以避免对类中数据的直接操作。类是封装的基本单元。数据的直接操作。类是封装的基本单元。l继承是对类
3、的功能的重用和扩充。继承是对类的功能的重用和扩充。l多态性是指方法的名字相同,但实现不同。多态性是指方法的名字相同,但实现不同。Java是一种完全面向对象的程序设计语言。它继承了是一种完全面向对象的程序设计语言。它继承了C+的优点。的优点。Java降低了程序的复杂性,实现了代码的降低了程序的复杂性,实现了代码的可重用性,提高了运行效率。可重用性,提高了运行效率。第4页,本讲稿共70页4.2 4.2 类的创建类的创建类的声明格式:类的声明格式:l 类类首首声声明明定定义义类类的的名名字字、访访问问权权限限以以及及与与其其它它类类的的关关系等。系等。l 类类主主体体定定义义类类的的成成员员,包包括
4、括变变量量(数数据据)和和方方法法(行为)(行为)第5页,本讲稿共70页 类首声明类首声明:class extends implements class:类定义的关键字;类定义的关键字;extends:表示类和另外一些类(超类)的继承关系;表示类和另外一些类(超类)的继承关系;implements:表示类实现了某些接口;表示类实现了某些接口;修修饰饰符符:表表示示类类访访问问权权限限(public、private等等)和和一一些些其其它它特特性性(abstract、final等);等);例如:例如:public class Date1声声明明Date1类类,访访问问权权限限为为public,表
5、表示示类类Date1可可以以被被该该类类所所属属的的包之外的类使用。包之外的类使用。第6页,本讲稿共70页类主体的结构:类主体的结构:/类首,以下为类主体类首,以下为类主体 l成员变量即类的数据,反映了类的属性和状态。成员变量即类的数据,反映了类的属性和状态。l成员方法即类的行为(对数据的操作)成员方法即类的行为(对数据的操作)例例4.2.1:声明一个日期类声明一个日期类Date1public class Date1 int year,month,day;/成员变量成员变量 public void today()/成员方法成员方法 System.out.println(“Date is”+ye
6、ar+”/”+month+”/”+day);第7页,本讲稿共70页例:根据几何中的坐标位置,定义一个Point类class Point private int x,y;public void setPoint(int a,int b)x=a;y=b;public int getX()return x;public int getY()return y;public String toString()return“+x+”,”+y+”;第8页,本讲稿共70页 成员变量的声明格式成员变量的声明格式:static final transient l static:表示是一个类成员变量(静态变量);表
7、示是一个类成员变量(静态变量);l final:表示是一个常量;表示是一个常量;(最终成员变量)最终成员变量)例:final double PI=3.1415926;l transient:表示一个临时变量表示一个临时变量l 修饰符修饰符:表示变量的访问权限(缺省访问、表示变量的访问权限(缺省访问、public、protected和和private)l作作用用域域:整整个个类类。同同一一类类中中的的所所有有方方法法都都可可以以对对其其访访问问。并并可可简简单单地地通通过过名名字字来来引引用用。(在在方方法法体体内内定定义义的的变变量量是是方方法法变变量量,作用域只能在方法体内)作用域只能在方法
8、体内)例:例:class Sampleclass public int I;method()int j;第9页,本讲稿共70页成员方法的声明格式:成员方法的声明格式:()throws 方法体方法体 l修饰符:修饰符:方法的访问权限方法的访问权限(缺省的、缺省的、public、protected和和private)static:类方法(静态方法);类方法(静态方法);abstract:抽象方法(无方法体的方法);抽象方法(无方法体的方法);final:最终方法(不能被子类改变)。最终方法(不能被子类改变)。throws:表示抛出异常表示抛出异常第10页,本讲稿共70页public class D
9、ate2 int year,month,day;/设置某一天日期的方法设置某一天日期的方法 public void setdate(int y,int m,int d)year=y;month=m;day=d;void today()/打印某一天日期的方法打印某一天日期的方法 System.out.println(The date of today is +year+/“+month+/+day);boolean isleap(int y)/判断某年是否是闰年的方法判断某年是否是闰年的方法 return(y%4=0&y%100!=0)|y%400=0;例例4.2.2:日期类的改进版,增加一些方
10、法,便于对数据的操作日期类的改进版,增加一些方法,便于对数据的操作第11页,本讲稿共70页void tomorrow()/计算并打印某天后面一天的日期的方法计算并打印某天后面一天的日期的方法 int d,m,y;d=day+1;m=month;y=year;if(d28)&month=2)if(!isleap(year)|d29)d=1;m=m+1;else if(d30&(month7&month%2=1)d=1;m=m+1;else if(d31)d=1;m=m+1;if(m=13)y=y+1;m=1;System.out.println(The date of tomorrow is +
11、y+/+m+/+d);第12页,本讲稿共70页 public static void main(String args)Date2 de=new Date2();de.setdate(2000,2,29);if (de.isleap(de.year)System.out.println(de.year+is a leap year);de.today();de.tomorrow();第13页,本讲稿共70页4.3 4.3 对象的创建和使用对象的创建和使用创建对象的两种方式:创建对象的两种方式:l第一种形式的创建步骤:第一种形式的创建步骤:第一步:第一步:声明对象声明对象 ;第二步:第二步:实例
12、化对象实例化对象 =new(参数参数1,参数,参数2,);例:例:Date1 a;/声明对象声明对象 a=new Date1();/实例化对象实例化对象 第14页,本讲稿共70页 第二种创建对象的形式:第二种创建对象的形式:=new(参数参数1,参数,参数2,);例:例:Date2 de=new Date2();实实例例化化就就是是为为对对象象分分配配存存储储空空间间,并并同同时时对对对对象象进进行行初初始始化化。这这些些工工作作分分别别用用new运运算算符符和和类类的的构构造造方方法法(Date2()来来完成。完成。第15页,本讲稿共70页邮箱:第16页,本讲稿共70页 4.3.2 4.3.
13、2 构造方法和对象的初始化构造方法和对象的初始化 类类的的构构造造方方法法是是一一种种特特殊殊方方法法,作作用用是是在在创创建建对对象象时时Java系统调用构造方法去初始化新建对象的成员变量。系统调用构造方法去初始化新建对象的成员变量。例:例:Date2 de=new Date2(1999,12,31);l如如果果没没有有自自定定义义构构造造方方法法,则则Java调调用用类类的的默默认认构构造造方方法法。Java将将使使用用缺缺省省值值(数数值值为为0,对对象象为为null,布布尔尔值值为为false,字符为,字符为0)来初始化成员变量。来初始化成员变量。例:例:Date2 de=new Da
14、te2();创建自定义构造方法创建自定义构造方法l类的构造方法的名字应该和这个类的名字一样;类的构造方法的名字应该和这个类的名字一样;l构构造造方方法法没没有有返返回回值值(在在构构造造方方法法名名字字前前连连void也也不不要要加)加)第17页,本讲稿共70页例例4.3.1:在类:在类Date2中增加自定义的构造方法中增加自定义的构造方法public class Date2 int year,month,day;Date2(int y,int m,int d)/创建构造函数创建构造函数 year=y;month=m;day=d;Date2()/缺省构造函数缺省构造函数 /以下同例4.2.2/
15、以下在main 方法中,调用构造函数对对象进行初始化第18页,本讲稿共70页public static void main(String args)Date2 de1,de2;de1=new Date2(1999,3,31);/调用构造函数进行初始化调用构造函数进行初始化 de2=new Date2();/调用缺省构造函数调用缺省构造函数 System.out.println(The first object:);if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);de1.today();de1.tomorrow
16、();System.out.println(The second object:);de2.setdate(2000,2,29);if(de2.isleap(de2.year)System.out.println(de2.year+”is a leap year”);de2.today();de2.tomorrow();第19页,本讲稿共70页 无参数的构造方法无参数的构造方法 如如果果有有自自己己创创建建的的构构造造方方法法,而而创创建建某某些些对对象象时时又又不不想想进进行行初初始始化化,一一定定要要在在类类中中创创建建无无参参数数的的构构造造方方法,因为此时已没有缺省的构造方法了。法,因
17、为此时已没有缺省的构造方法了。构造方法是可以重载的构造方法是可以重载的 同名但参数不一样的构造方法同名但参数不一样的构造方法第20页,本讲稿共70页4.3.3 对象的使用对象的使用l成员变量的引用格式:成员变量的引用格式:.例:if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);l成员方法的调用格式:成员方法的调用格式:.例:if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);第21页,本讲稿共70页4.3.4 对象的消毁对象的消毁
18、l对象的生命周期对象的生命周期:对象的创建、使用和销毁这一过程。:对象的创建、使用和销毁这一过程。l对对象象的的销销毁毁:当当对对象象使使用用完完毕毕后后,释释放放对对象象所所占占有有的的资资源(如分配给它的内存)。源(如分配给它的内存)。l 对象销毁的方法对象销毁的方法 Java能能自自动动判判断断对对象象是是否否在在使使用用,并并自自动动销销毁毁不不再再使使用用的的对象,收回对象所占的资源。对象,收回对象所占的资源。采用析构方法(采用析构方法(finalize)在程序中随时销毁一个对象。)在程序中随时销毁一个对象。第22页,本讲稿共70页4.4 4.4 类的封装类的封装 目的:目的:l限限
19、制制在在类类的的外外部部对对类类内内部部成成员员进进行行访访问问。只只通通过过公公共共接接口来访问类的成员数据。口来访问类的成员数据。l屏屏蔽蔽细细节节。这这是是程程序序设设计计的的基基本本思思想想方方法法。便便于于程程序序功功能的扩展和程序的维护。能的扩展和程序的维护。访问权限的设置访问权限的设置权限权限同一类同一类同一包同一包不同包的子类不同包的子类所有类所有类public允许允许允许允许允许允许允许允许protected允许允许允许允许允许允许不允许不允许默认默认允许允许允许允许不允许不允许不允许不允许private允许允许不允许不允许不允许不允许不允许不允许第23页,本讲稿共70页l类
20、的访问权限的设置类的访问权限的设置类的权限有两种:默认和类的权限有两种:默认和public。如如果果在在一一个个源源程程序序文文件件中中,声声明明了了若若干干个个类类的的话话,只只能能有有一一个个类类的的权权限限关关键键字字是是public。这这个个类类的的名名字字应应该该和和程程序序文件同名,文件同名,main方法也应该在这个类中。方法也应该在这个类中。例:例:public class Date public static void main(String args)class time 第24页,本讲稿共70页类的成员的访问权限设置类的成员的访问权限设置用用权权限限关关键键字字设设置置类类
21、的的成成员员的的权权限限,以以此此决决定定是是否允许其类外部的代码访问这些成员。否允许其类外部的代码访问这些成员。例:例:private int year,month,day;public today();lpublic被修饰为public的类是公共类,它可供所在包的其他类使用,也可供其他包中的类使用,在程序中可以用import语句引入其他包中的public类。被public定义的类中成员变量或方法可以供其他类访问。例:使用import引入其他包中的public类:第25页,本讲稿共70页import ax.Account;import ax.Account;public class User
22、accountpublic class Useraccount public static void main(String args)public static void main(String args)Account myaccount=new Account();Account myaccount=new Account();myaccount.name=myaccount.name=张三张三;myaccount.address=myaccount.address=上海市延安西路上海市延安西路1 1号号;myaccount.balance=123.40;myaccount.balanc
23、e=123.40;myaccount.display();myaccount.display();package ax;public class Account public String name;public String address;public double balance;public void display()System.out.println(name:+name);System.out.println(Address:+address);System.out.println(balance:+balance);第26页,本讲稿共70页 protected该类的成员可以被
24、同一包中的类或其它包中的该类的子类访问。默认 默认的权限,该类的成员能被同一包中的类访问。private设置private访问权限,则该类的成员只能被同一类中的成员访问,而不让其他类进行访问。例4.4.1第27页,本讲稿共70页public class Date3int year,month,day;Date3(int y,int m,int d)year=y;month=m;day=d;Date3()public void setdate(int y,int m,int d)year=y;month=m;day=d;void today()System.out.println(The dat
25、e of today is+year+/+month+/+day);boolean isleap(int y)return(y%4=0&y%100!=0)|y%400=0;第28页,本讲稿共70页 void tomorrow()int d,m,y;d=day+1;m=month;y=year;if(d28)&month=2)if(!isleap(year)|d29)d=1;m=m+1;else if(d30&(month7&month%2=1)d=1;m=m+1;else if(d31)d=1;m=m+1;if(m=13)y=y+1;m=1;System.out.println(The dat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 面向 对象 程序设计 优秀 课件
限制150内