Java面向对象特性.ppt
《Java面向对象特性.ppt》由会员分享,可在线阅读,更多相关《Java面向对象特性.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 Java Java面向对象特性面向对象特性贺玉珍贺玉珍运城学院计算机科学与技术系运城学院计算机科学与技术系1主要内容主要内容l 类类的定义的定义l 对象生命周期对象生命周期l 继承继承l 多态多态l 内部内部类类计算机科学与技术系计算机科学与技术系24.1 类和对象类和对象u类与对象是构成类与对象是构成 Java程序的基本组成要素程序的基本组成要素u类描述了同一类对象都具有的数据和行为;类描述了同一类对象都具有的数据和行为;类是一种复合数据类型类是一种复合数据类型 类是一个模板类是一个模板 对象是在其类模型基础上构造出的,是具体的对象是在其类模型基础上构造出的,是具体的 实例。实
2、例。计算机科学与技术系计算机科学与技术系34.2 类的定义类的定义o l类的基本结构类的基本结构lJava类类l类声明格式:类声明格式:修饰符修饰符abstractfinalclass 类名类名 extends 父类父类【implematns 接口接口】l说明:说明:类声明只能用类声明只能用public和和default,如果类不是公有类,则,如果类不是公有类,则只有与该类所在的包才可访问该类只有与该类所在的包才可访问该类一种引用数据类型一种引用数据类型是组成是组成Java程序的基本要素程序的基本要素类的组成:类声明和类体类的组成:类声明和类体 类体包括成员变量和成员方法类体包括成员变量和成员
3、方法计算机科学与技术系计算机科学与技术系/Animal.javaclass Animal /成员变量定义成员变量定义 public int legs;/成员方法定义成员方法定义 public void eat()System.out.println(“Eating”);public void move()System.out.println(“Moving”);4数据封装与隐藏数据封装与隐藏封装:基本数据和对数据进行的操作方法的结合。封装:基本数据和对数据进行的操作方法的结合。优点:优点:隐藏类中具体实现的细节。隐藏类中具体实现的细节。强迫程序员使用统一的接口访问数据。强迫程序员使用统一的接口
4、访问数据。使代码可维护性好。使代码可维护性好。数据隐藏:使用数据隐藏:使用private定义的成员变量,只能定义的成员变量,只能 在成员方法中使用,其它方法中禁止使用。在成员方法中使用,其它方法中禁止使用。优点:优点:保证对象中数据的一致性。保证对象中数据的一致性。计算机科学与技术系计算机科学与技术系5数据隐藏与封装举例数据隐藏与封装举例Class Dateprivate int day,month,year;void setDate(int a,int b,int c)day=a;month=b;year=c;Date d1;D1=new Date();d1.setDate(30,9,200
5、1);.d1.day=30;(错误!)错误!)计算机科学与技术系计算机科学与技术系6计算机科学与技术系计算机科学与技术系l成员变量的声明格式为:成员变量的声明格式为:修饰符修饰符 (=缺省值缺省值)4.2.2 成员变量成员变量74.2.34.2.3类成员方法类成员方法一般格式:一般格式:修饰符修饰符 (形参表形参表)说明:说明:方法只能是类的成员,只能在类中定义方法只能是类的成员,只能在类中定义方法是传值的,方法调用不会改变参数的值方法是传值的,方法调用不会改变参数的值当对象作为参数时,参数的值是该对象的引用,这时对象的内容当对象作为参数时,参数的值是该对象的引用,这时对象的内容可以在方法中改
6、变,但是对象的引用不会改变。可以在方法中改变,但是对象的引用不会改变。计算机科学与技术系计算机科学与技术系8Public class PassTestfloat ptValue;public void changeInt(int value)value=55;public void changeObjValue(PassTest ref)ref.ptValue=99.0f;public static void main(String args )String str;int val;PassTest pt=new PassTest();val=11;pt.changeInt(val);Syst
7、em.out.println(“Int value is:”+val);pt.ptvalue=101.0f;pt.changeObjValue(pt);System.out.println(“pt value is:”+pt.ptValue);结果:结果:Int Value is:11 pt value is:99.0f计算机科学与技术系计算机科学与技术系94.2.44.2.4方法重载(方法重载(Overloading)Overloading)含义:在同一个类中一个方法名被用来定义多个含义:在同一个类中一个方法名被用来定义多个 方法。方法。class Screen public void pr
8、int(int i)public void print(float i)public void print(String str)重载必须遵守原则:重载必须遵守原则:参数表必须不同,以此区分不同方法体。参数表必须不同,以此区分不同方法体。返回类型、修饰符可相同或不相同。返回类型、修饰符可相同或不相同。计算机科学与技术系计算机科学与技术系104.2.5”this”4.2.5”this”关键字关键字u 关键字关键字this 用来指向当前对象本身用来指向当前对象本身u this有时是必须的有时是必须的例:例:class Date private int day,month,year;public D
9、ate(int day,int month,int year)this.day=day;this.month=month;this.year=year;public Date getTommorrow()this.day+;计算机科学与技术系计算机科学与技术系11u构造方法用来对对象进行初始化构造方法用来对对象进行初始化构造方法定义:构造方法定义:访问权限访问权限 方法名(方法名(参数参数)注意:注意:方法名必须与类名相同。方法名必须与类名相同。不能带返回类型。不能带返回类型。用户不能直接调用构造方法,必须通过用户不能直接调用构造方法,必须通过 new自动调用自动调用访问权限有四种:访问权限有
10、四种:public、private、protected、缺省缺省4.2.6 4.2.6 类的构造方法类的构造方法计算机科学与技术系计算机科学与技术系12u 如果在类定义中无构造方法,如果在类定义中无构造方法,Java在编译时可缺省在编译时可缺省加入构造方法。加入构造方法。如如 public Date();u 使用缺省构造方法初始化对象时,系统用默认值初使用缺省构造方法初始化对象时,系统用默认值初始化对象的成员变量始化对象的成员变量 一旦在类中有一个自己声明的构造函数,则缺省的一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到类定义中。构造函数将不被加到类定义中。缺省构造方法缺省构造
11、方法计算机科学与技术系计算机科学与技术系13重载的构造方法重载的构造方法在一个构造方法中可以利用另一个构造方法。在一个构造方法中可以利用另一个构造方法。class Employeeprivate String name;private int salary;public Employee(String n,int s)name=n;salary=s;public Employee(String n)this(n,0);public Employee()this(“Unknown”);说明:说明:this()则是调用自己类的构造方法,它只能在构造方则是调用自己类的构造方法,它只能在构造方法中使用
12、,且必须放在第一行。法中使用,且必须放在第一行。计算机科学与技术系计算机科学与技术系14计算机科学与技术系计算机科学与技术系lJava权限修饰符权限修饰符private、protected、public置于置于类的成员定义之前,用来限定其他对象对该对象成员的类的成员定义之前,用来限定其他对象对该对象成员的访问权限。访问权限。l缺省为包级权限缺省为包级权限4.2.7访问控制访问控制154.3.1 内部类:内部类:在一个类的内部嵌套定义类。在一个类的内部嵌套定义类。4.3.2内部类的使用:内部类的使用:1、是其它类的成员使用、是其它类的成员使用n可以访问外部类的所有成员可以访问外部类的所有成员n当
13、内部类与外部类成员变量名相同时,访问外部类当内部类与外部类成员变量名相同时,访问外部类成员用成员用 外部类名外部类名.this.外部成员变量名外部成员变量名4.34.3内部类内部类计算机科学与技术系计算机科学与技术系16l内内计算机科学与技术系计算机科学与技术系public class Outer private int size;/*定义内部类定义内部类Inner*/public class Inner/将外包类的成员变量将外包类的成员变量size递增递增public void doStuff()size+;Inner i=new Inner();/成员变量成员变量i指向指向Inner类的对
14、象类的对象public void increaseSize()i.doStuff();/调用内部类调用内部类Inner的方法的方法public static void main(String a)Outer o=new Outer();for(int i=0;i4;i+)o.increaseSize();System.out.println(The value of size:+o.size);172、在外包类的一个语句块的内部定义、在外包类的一个语句块的内部定义 在方法运行时可以访问语句块中的局部变量,运行结束在方法运行时可以访问语句块中的局部变量,运行结束则不能访问(则不能访问(final
15、变量除外)变量除外)3、在外包类以外的其他类中访问内部类、在外包类以外的其他类中访问内部类 其他类使用内部类需要以下代码形式:其他类使用内部类需要以下代码形式:Outer out=new Outer();Outer.Inner in=out.new Inner();4.34.3内部类内部类计算机科学与技术系计算机科学与技术系18l内部类直接访问外部类的成员和方法内部类直接访问外部类的成员和方法l外部类如同使用其它类一样使用自己的内部类外部类如同使用其它类一样使用自己的内部类l内部类可以被更多的访问控制符修饰:内部类可以被更多的访问控制符修饰:private:只有外层类可以使用只有外层类可以使用
16、 protected:只有外层类、与外层类处于同一个包的只有外层类、与外层类处于同一个包的类、外层类的子类可以访问类、外层类的子类可以访问l内部类可以是接口及抽象类内部类可以是接口及抽象类l内部类可以被声明为内部类可以被声明为static,内部类就变成一个顶层类。内部类就变成一个顶层类。l一般内部类成员不能声明为一般内部类成员不能声明为static4.3.34.3.3内部类的特性内部类的特性计算机科学与技术系计算机科学与技术系194.4 对象对象生命周期生命周期 创建对象创建对象 使用对象使用对象 清除不用的对象清除不用的对象计算机科学与技术系计算机科学与技术系204.4.1创建对象创建对象例
17、:例:Point origin_one;origin_one=new Point(23,94);Rectangle rect_one=new Rectangle(origin_one,100,200);Rectangle rect_two=new Rectangle(50,100);创建对象的三个步骤:创建对象的三个步骤:声明声明(Declaration)实例化(实例化(Instantiation)初始化(初始化(Initialization)计算机科学与技术系计算机科学与技术系21对象对象实例化实例化过程过程实例化与初始化对象的过程(调用实例化与初始化对象的过程(调用new Xxxx():开
18、辟内存空间(变量、方法体代码)及类成员变量的初始化开辟内存空间(变量、方法体代码)及类成员变量的初始化:数值型:数值型:0;布尔型:布尔型:false;引用型:引用型:null;字符串型:字符串型:null;显式初始化:执行类显式初始化:执行类成员声明成员声明时带有的简单赋值表达式。时带有的简单赋值表达式。public class Initializedprivate int x=5;private String name=“Fred”;执行构造方法。执行构造方法。计算机科学与技术系计算机科学与技术系224.4.2 4.4.2 对象的回收对象的回收垃圾收集机制(垃圾收集机制(garbage c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 特性
限制150内