4类和对象.ppt
《4类和对象.ppt》由会员分享,可在线阅读,更多相关《4类和对象.ppt(62页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第四章第四章类和对象类和对象2学习目标:学习目标:理解面向对象思想理解面向对象思想掌握掌握Java类的定义和使用类的定义和使用掌握掌握Java对象的定义和使用对象的定义和使用掌握掌握static关键字关键字了解了解this关键字关键字34.1 面向对象的基本概念面向对象的基本概念对象对象消息消息类类封装封装继承继承多态多态面向对象的基本特征面向对象的基本特征44.1 面向对象的基本概念面向对象的基本概念面向对象的思考方式:面向对象的思考方式:问题中有哪些类和对象问题中有哪些类和对象这些类、对象有哪些属性和方法这些类、对象有哪些属性和方法这些类、对象之间有什么关系这些类、对象之间有什么关系5类是
2、具有共同类是具有共同属性和行为的属性和行为的对象的抽象。对象的抽象。类可以定义为类可以定义为数据和方法的数据和方法的集合集合。类对象抽抽象象实实例例化化封装的实体封装的实体=数据数据+方法方法行为行为属性属性方法方法数据数据4.2 类类6类的定义格式为:类的定义格式为:类类修修饰饰符符class类类名名typevariable1;typevariableN;typemethodname1(parameter-list)/方法体方法体typemethodnameN(parameter-list)/方法体方法体 成员变量(对象属性)成员变量(对象属性)成员方法成员方法(对象行为(对象行为或操作)或
3、操作)类名(自定义类名(自定义的标识符)的标识符)4.2.1 类的定义类的定义7例:例:classCarintcolor;intspeed;voidbrake()voidspeedUp();voidslowDown()计算机中计算机中的对象的原型的对象的原型 现实生活现实生活中的对象中的对象8例:自定义日期类例:自定义日期类包括设定日期、判断该年是否为闰年,输包括设定日期、判断该年是否为闰年,输出日期功能出日期功能public class MyDateint year,month,day;void setDate(int y,int m,int d)year=y;month=m;day=d;b
4、oolean isLeapYear()if(year%400=0|year%4=0&year%100!=0)return true;elsereturn false;public void showDate()System.out.println(year+-+month+-+day);9vstatic(类静态成员变量类静态成员变量)vfinal(声明常量,不能改变其值声明常量,不能改变其值)vvolatile(多线程共享变量多线程共享变量)vpublic、(default)、protected、private4.2.2 成员变量成员变量成员变量成员变量修饰符修饰符=;例如:例如:static
5、intspeed=80;intspeed;作用域:作用域:整个类内有效整个类内有效局部变量:方法内定义的变量,方法内有效局部变量:方法内定义的变量,方法内有效10说明:说明:成员变量的类型可以是成员变量的类型可以是java中任意的数据类中任意的数据类型型在一个类中,成员变量是唯一的在一个类中,成员变量是唯一的成员变量的作用范围:类内有效;成员变量的作用范围:类内有效;局部变量的作用范围:方法内部有效局部变量的作用范围:方法内部有效成员变量可以使用修饰符成员变量可以使用修饰符 局部变量不可以使用修饰符局部变量不可以使用修饰符(除了除了final用来定义常量用来定义常量)4.2.2 成员变量成员变
6、量114.2.3 成员方法成员方法成员方法:成员方法:修修饰饰符符类类型型方法名方法名(参数列表参数列表)/方法体方法体返回类返回类型型public、protected、private、static等等publicvoidchangeSpeed(intnewSpeed)speed=newSpeed;1、方法的定义、方法的定义122、方法的调用、方法的调用4.2.3 成员方法成员方法方法名方法名(参数列表参数列表)-成员方法调用成员方法成员方法调用成员方法类类.方法名方法名(参数列表参数列表)-调用调用static修饰的方法修饰的方法对象对象.方法名方法名(参数列表参数列表)-调用无调用无sta
7、tic修饰的方法修饰的方法134.2.3 成员方法成员方法3、方法调用时参数的传递、方法调用时参数的传递传值调用:方法的参数是传值调用:方法的参数是基本数据类型基本数据类型传引用调用:方法的参数是传引用调用:方法的参数是复合数据类型复合数据类型144.2.4 构造方法构造方法与类名相同与类名相同无返回值类型无返回值类型创建对象时自动调用,不显示调用创建对象时自动调用,不显示调用classRectdoublew,h;publicRect(doublea,doubleb)w=a;h=b;doublecomputeArea()returnw*h;154.2.4 构造方法构造方法说明:说明:一般构造方
8、法的访问权限设置为一般构造方法的访问权限设置为public或或(default),很少定义为,很少定义为private如果在一个类里没有定义构造方法,系统如果在一个类里没有定义构造方法,系统提供一个默认的构造方法。这个默认的构提供一个默认的构造方法。这个默认的构造方法没有形式参数,也没有任何具体语造方法没有形式参数,也没有任何具体语句。句。16应用举例:应用举例:使用类的重载构造方法,生成不同的箱子对象,使用类的重载构造方法,生成不同的箱子对象,计算箱子的体积计算箱子的体积class Boxint width,height,length;public Box(int a)width=a;hei
9、ght=a;length=a;public Box(int a,int b)width=a;length=a;height=b;定义一个定义一个正方体正方体定义一个底为正定义一个底为正方形的立方体方形的立方体17 public Box(int a,int b,int c)width=a;length=b;height=c;public int volume()return width*length*height;public void display()System.out.println(the box volume is:+volume();定义一个长、宽、定义一个长、宽、高不相同的立方体
10、高不相同的立方体18public class ConstructorDemopublic static void main(String args)Box b1=new Box(2);Box b2=new Box(2,3);Box b3=new Box(2,3,4);b1.display();b2.display();b3.display();根据参数不同,调根据参数不同,调用不同的构造方法用不同的构造方法192.对象的创建对象的创建 对象名对象名=new 类名(类名(参数参数););/创建对创建对象象 例:例:r=new Box(2);4.2.5 类的对象类的对象1.对象的声明对象的声明 类
11、名类名 对象名;对象名;/声明对声明对象象 例:例:Rect r;调用构造方法调用构造方法3.使用对象使用对象 对象对象.属性;对象属性;对象.方法();方法();204.2.6 this关键字关键字代表本类对象,可出现在构造方法,实例代表本类对象,可出现在构造方法,实例方法中,不可出现在类方法中。方法中,不可出现在类方法中。使用使用this区分区分成员变量成员变量和和局部变量。局部变量。class ThisDemoint a,b;public ThisDemo(int a)this.a=a;public ThisDemo(int a,int b)this(a);this.b=b;public
12、 int add()return a+b;public void display()System.out.println(a=+a+,b=+b);System.out.println(a+b=+this.add();214.3 修饰符修饰符修饰符(修饰类、成员方法和成员变量)修饰符(修饰类、成员方法和成员变量)访问控制符:访问控制符:private,protected,缺省缺省,public,非访问控制符:非访问控制符:static,final,abstract,syncronized,native,volatile22修饰符修饰符类类成员变量成员变量成员方法成员方法接口接口public(de
13、fault)protectedprivatefinalstaticabstractsynchronizedvolatilenative4.3 修饰符修饰符234.3.1 public若若类类声明为声明为public,表示同一包中的类可自由访表示同一包中的类可自由访问此类,而别的包中的其他类可通过问此类,而别的包中的其他类可通过import引入。引入。q 一个程序文件里最多只能有一个类被修饰为一个程序文件里最多只能有一个类被修饰为publicpublicq 源文件的文件名,必须是用源文件的文件名,必须是用publicpublic修饰的类修饰的类名名q 若程序文件中没有任何若程序文件中没有任何pu
14、blicpublic类,且文件名类,且文件名是程序中的一个类名,则该类被视作是程序中的一个类名,则该类被视作publicpublic24若若成员变量、成员方法成员变量、成员方法声明为声明为public,表示此成表示此成员变量、成员方法可被该类的实例或继承该类的员变量、成员方法可被该类的实例或继承该类的子类访问。其它包的类也可以通过引入共有类,子类访问。其它包的类也可以通过引入共有类,访问共有类中的访问共有类中的public成员。成员。q 一般,成员方法定义为一般,成员方法定义为publicpublic,提供其他程提供其他程序访问的接口序访问的接口q若成员变量声明为若成员变量声明为public,
15、其他类的方法可以其他类的方法可以直接访问它,但这样破坏了封闭性直接访问它,但这样破坏了封闭性4.3.1 public25在访问控制中,友好在访问控制中,友好(default)的访问权限,指的访问权限,指的是在没有任何修饰符的情况下,系统会对变的是在没有任何修饰符的情况下,系统会对变量或方法采用默认的访问权限。量或方法采用默认的访问权限。修饰类:可被同一包中的其它类所存取修饰类:可被同一包中的其它类所存取修饰成员变量、成员方法:被同一包中的其它类所存修饰成员变量、成员方法:被同一包中的其它类所存取取4.3.2 友好的友好的(default)26protected不能不能修饰修饰类类protect
16、ed修饰修饰成员变量成员变量和和成员方法成员方法,表示被该,表示被该类中的方法、同一包中类或被其子类(可在不类中的方法、同一包中类或被其子类(可在不同包)所访问同包)所访问q一般,对于只希望继承其类的子类访问的数一般,对于只希望继承其类的子类访问的数据成员和成员方法我们使用据成员和成员方法我们使用protected修饰。修饰。4.3.3 protected27private不能不能修饰修饰类类private修饰的修饰的成员变量成员变量和和成员方法成员方法只能被同只能被同一类中的其他成员访问一类中的其他成员访问q一般,我们将成员变量定义为一般,我们将成员变量定义为privateprivate,保
17、证保证了其隐藏性。了其隐藏性。q通过通过getXXXgetXXX()()或或setXXXsetXXX()()等修饰为等修饰为publicpublic的的方法,访问、设置属性,提供访问数据成员的方法,访问、设置属性,提供访问数据成员的方法。方法。4.3.4 private28访问控制权限控制小结访问控制权限控制小结访问控制访问控制本类本类同一包同一包中的类中的类其他包其他包中子类中子类其他包其他包中的类中的类public protected (default)友好友好 private 访问权限:访问权限:publicprotecteddefaultprivate294.3.5 staticcla
18、ss People boolean ifwork;int age;static boolean ifwork;区别区别对比项对比项内存内存同类使用同类使用外类使用外类使用类变量类变量永永远远占占一一块块,加加载载时分配,实例共用时分配,实例共用直接用直接用带带类类名名直直接接使使用用,不不必必生成对象生成对象实例变量实例变量一一个个对对象象占占一一块块,创建对象时分配创建对象时分配直接用直接用必必先先生生成成对对象象,然然后后再再使用使用1、类变量与实例变量、类变量与实例变量30class People void work()void conBirthday(int age)static vo
19、id work()区别区别对比项对比项内存内存同类使用同类使用外类使用外类使用类方法类方法永永远远占占一一块块,加加载载时分配,实例共有时分配,实例共有直接用直接用带带类类名名直直接接使使用用,不不必必生成对象生成对象实例方法实例方法创创建建对对象象时时分分配配,所所有有对对象象消消失失才才取取消消实例方法直接用实例方法直接用必必先先生生成成对对象象,然然后后再再使用使用4.3.5 staticNote:l类方法中不能类方法中不能调用实例方法;调用实例方法;l类方法中不能类方法中不能使用实例变量。使用实例变量。2、类方法与实例方法、类方法与实例方法31final修饰修饰类类,表示为,表示为“终
20、极终极”、“最终最终”类,类,别的类不能继承此类。别的类不能继承此类。final修饰修饰成员变量成员变量,表示该成员变量是一个常,表示该成员变量是一个常量,不能被修改。量,不能被修改。final修饰修饰成员方法成员方法,表示该成员方法不能被重,表示该成员方法不能被重写写4.3.6 finalfinal与与public联用,表示只能被访问,不能被继承或重写联用,表示只能被访问,不能被继承或重写。如,如,java.lang.System类即被修饰为类即被修饰为final类类324.4 静态初始化静态初始化静态初始化:一种在类加载时,做一些起静态初始化:一种在类加载时,做一些起始动作的程序块始动作的
21、程序块static/程序块程序块33public class StaticInitDemostatic int x=100;static double y;double z;staticy=3.1415926;StaticInitDemo()z=y*x*x;public static void main(String args)StaticInitDemo s1=new StaticInitDemo();System.out.println(x=+x);System.out.println(y=+y);System.out.println(z=+s1.z);34p静态初始化:静态初始化:不可以
22、设置参数;不可以设置参数;加载到内存时被执行;加载到内存时被执行;不能使用实例变量、实例方法;不能使用实例变量、实例方法;不能使用不能使用this或或superp构造方法:构造方法:可以设置参数;可以设置参数;创建对象时被调用;创建对象时被调用;可以使用类变量、类方法,实例变量、实例方法可以使用类变量、类方法,实例变量、实例方法可以使用可以使用this或或super354.5 内部类内部类Java允许在一个类中声明另一个类,我们允许在一个类中声明另一个类,我们称为内部类或嵌套类,包含内部类的类称称为内部类或嵌套类,包含内部类的类称为外部类。为外部类。内部类可看作是外部类的内部类可看作是外部类的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类和对象 对象
限制150内