欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java面向对象特性.ppt

    • 资源ID:80452779       资源大小:263.99KB        全文页数:43页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java面向对象特性.ppt

    第四章第四章 Java Java面向对象特性面向对象特性贺玉珍贺玉珍运城学院计算机科学与技术系运城学院计算机科学与技术系1主要内容主要内容l 类类的定义的定义l 对象生命周期对象生命周期l 继承继承l 多态多态l 内部内部类类计算机科学与技术系计算机科学与技术系24.1 类和对象类和对象u类与对象是构成类与对象是构成 Java程序的基本组成要素程序的基本组成要素u类描述了同一类对象都具有的数据和行为;类描述了同一类对象都具有的数据和行为;类是一种复合数据类型类是一种复合数据类型 类是一个模板类是一个模板 对象是在其类模型基础上构造出的,是具体的对象是在其类模型基础上构造出的,是具体的 实例。实例。计算机科学与技术系计算机科学与技术系34.2 类的定义类的定义o l类的基本结构类的基本结构lJava类类l类声明格式:类声明格式:修饰符修饰符abstractfinalclass 类名类名 extends 父类父类【implematns 接口接口】l说明:说明:类声明只能用类声明只能用public和和default,如果类不是公有类,则,如果类不是公有类,则只有与该类所在的包才可访问该类只有与该类所在的包才可访问该类一种引用数据类型一种引用数据类型是组成是组成Java程序的基本要素程序的基本要素类的组成:类声明和类体类的组成:类声明和类体 类体包括成员变量和成员方法类体包括成员变量和成员方法计算机科学与技术系计算机科学与技术系/Animal.javaclass Animal /成员变量定义成员变量定义 public int legs;/成员方法定义成员方法定义 public void eat()System.out.println(“Eating”);public void move()System.out.println(“Moving”);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,2001);.d1.day=30;(错误!)错误!)计算机科学与技术系计算机科学与技术系6计算机科学与技术系计算机科学与技术系l成员变量的声明格式为:成员变量的声明格式为:修饰符修饰符 (=缺省值缺省值)4.2.2 成员变量成员变量74.2.34.2.3类成员方法类成员方法一般格式:一般格式:修饰符修饰符 (形参表形参表)说明:说明:方法只能是类的成员,只能在类中定义方法只能是类的成员,只能在类中定义方法是传值的,方法调用不会改变参数的值方法是传值的,方法调用不会改变参数的值当对象作为参数时,参数的值是该对象的引用,这时对象的内容当对象作为参数时,参数的值是该对象的引用,这时对象的内容可以在方法中改变,但是对象的引用不会改变。可以在方法中改变,但是对象的引用不会改变。计算机科学与技术系计算机科学与技术系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);System.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 print(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 Date(int day,int month,int year)this.day=day;this.month=month;this.year=year;public Date getTommorrow()this.day+;计算机科学与技术系计算机科学与技术系11u构造方法用来对对象进行初始化构造方法用来对对象进行初始化构造方法定义:构造方法定义:访问权限访问权限 方法名(方法名(参数参数)注意:注意:方法名必须与类名相同。方法名必须与类名相同。不能带返回类型。不能带返回类型。用户不能直接调用构造方法,必须通过用户不能直接调用构造方法,必须通过 new自动调用自动调用访问权限有四种:访问权限有四种:public、private、protected、缺省缺省4.2.6 4.2.6 类的构造方法类的构造方法计算机科学与技术系计算机科学与技术系12u 如果在类定义中无构造方法,如果在类定义中无构造方法,Java在编译时可缺省在编译时可缺省加入构造方法。加入构造方法。如如 public Date();u 使用缺省构造方法初始化对象时,系统用默认值初使用缺省构造方法初始化对象时,系统用默认值初始化对象的成员变量始化对象的成员变量 一旦在类中有一个自己声明的构造函数,则缺省的一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到类定义中。构造函数将不被加到类定义中。缺省构造方法缺省构造方法计算机科学与技术系计算机科学与技术系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()则是调用自己类的构造方法,它只能在构造方则是调用自己类的构造方法,它只能在构造方法中使用,且必须放在第一行。法中使用,且必须放在第一行。计算机科学与技术系计算机科学与技术系14计算机科学与技术系计算机科学与技术系lJava权限修饰符权限修饰符private、protected、public置于置于类的成员定义之前,用来限定其他对象对该对象成员的类的成员定义之前,用来限定其他对象对该对象成员的访问权限。访问权限。l缺省为包级权限缺省为包级权限4.2.7访问控制访问控制154.3.1 内部类:内部类:在一个类的内部嵌套定义类。在一个类的内部嵌套定义类。4.3.2内部类的使用:内部类的使用:1、是其它类的成员使用、是其它类的成员使用n可以访问外部类的所有成员可以访问外部类的所有成员n当内部类与外部类成员变量名相同时,访问外部类当内部类与外部类成员变量名相同时,访问外部类成员用成员用 外部类名外部类名.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类的对象类的对象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变量除外)变量除外)3、在外包类以外的其他类中访问内部类、在外包类以外的其他类中访问内部类 其他类使用内部类需要以下代码形式:其他类使用内部类需要以下代码形式:Outer out=new Outer();Outer.Inner in=out.new Inner();4.34.3内部类内部类计算机科学与技术系计算机科学与技术系18l内部类直接访问外部类的成员和方法内部类直接访问外部类的成员和方法l外部类如同使用其它类一样使用自己的内部类外部类如同使用其它类一样使用自己的内部类l内部类可以被更多的访问控制符修饰:内部类可以被更多的访问控制符修饰:private:只有外层类可以使用只有外层类可以使用 protected:只有外层类、与外层类处于同一个包的只有外层类、与外层类处于同一个包的类、外层类的子类可以访问类、外层类的子类可以访问l内部类可以是接口及抽象类内部类可以是接口及抽象类l内部类可以被声明为内部类可以被声明为static,内部类就变成一个顶层类。内部类就变成一个顶层类。l一般内部类成员不能声明为一般内部类成员不能声明为static4.3.34.3.3内部类的特性内部类的特性计算机科学与技术系计算机科学与技术系194.4 对象对象生命周期生命周期 创建对象创建对象 使用对象使用对象 清除不用的对象清除不用的对象计算机科学与技术系计算机科学与技术系204.4.1创建对象创建对象例:例: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():开辟内存空间(变量、方法体代码)及类成员变量的初始化开辟内存空间(变量、方法体代码)及类成员变量的初始化:数值型:数值型:0;布尔型:布尔型:false;引用型:引用型:null;字符串型:字符串型:null;显式初始化:执行类显式初始化:执行类成员声明成员声明时带有的简单赋值表达式。时带有的简单赋值表达式。public class Initializedprivate int x=5;private String name=“Fred”;执行构造方法。执行构造方法。计算机科学与技术系计算机科学与技术系224.4.2 4.4.2 对象的回收对象的回收垃圾收集机制(垃圾收集机制(garbage collection):):Java运行环境当确定运行环境当确定某个对象不再被使用时,将其删除。某个对象不再被使用时,将其删除。一个对象在没有引用指向它时,可作为垃圾收集。一个对象在没有引用指向它时,可作为垃圾收集。垃圾搜集器:垃圾搜集器:Java运行环境中的垃圾搜集器周期性地释放运行环境中的垃圾搜集器周期性地释放不用对象占用的空间。不用对象占用的空间。计算机科学与技术系计算机科学与技术系23垃圾收集机制垃圾收集机制C+:A*a=new A();A*b=a;A*c=a;Java:A a=new A();A b=a;A c=a;b c(指针悬空)a b ca b c b c/a 使用完,将其删除使用完,将其删除delete a;/a 使用完,将其删除使用完,将其删除 a=null;计算机科学与技术系计算机科学与技术系24l每个对象有自己的引用计数器,计数器减为零时每个对象有自己的引用计数器,计数器减为零时对象丢失,系统在其后某个时刻自动回收不再可用对象丢失,系统在其后某个时刻自动回收不再可用的对象。的对象。例:Rock R1=new Rock(1);/计数为1Rock R2=R1;/计数为2 /计数为1 /计数为0计算机科学与技术系计算机科学与技术系对象的清除对象的清除25l触发垃圾回收操作触发垃圾回收操作程序中显式执行垃圾回收程序中显式执行垃圾回收在虚拟机内存耗尽的时候在虚拟机内存耗尽的时候在程序空闲的时候在程序空闲的时候特定的时机触发特定的时机触发l注意:注意:java的垃圾回收自动进行的垃圾回收自动进行计算机科学与技术系计算机科学与技术系264.5 4.5 类的继承与多态类的继承与多态4.5.1类的继承类的继承子类表示类之间一种子类表示类之间一种“属于属于”(is a)关系。关系。例:例:public class Employee String name;Date hireDate;Date dateofBirth;String jobTitle;int grade;public class Manager String name;Date hireDate;Date dateofBirth;String jobTitle;int grade;String department;Employee subordinates;计算机科学与技术系计算机科学与技术系27 Java中用中用 extends 关键字定义子类。关键字定义子类。Extends Extends 关键字关键字public class Employee String name;Date hireDate;Date dateofBirth;String jobTitle;int grade;子类是从已有的类创建新类的一种方法。子类是从已有的类创建新类的一种方法。public class Manager extends Employee String department;Employee subordinates;计算机科学与技术系计算机科学与技术系28子类子类子类继承父类的属性、功能(方法),子类中只子类继承父类的属性、功能(方法),子类中只 需声明特有的东西。需声明特有的东西。带带private 修饰符的属性、方法是不能被继承的。修饰符的属性、方法是不能被继承的。构造方法不能被继承。构造方法不能被继承。调用父类的构造方法用调用父类的构造方法用super()。-super 指向该关键字所在类的父类。指向该关键字所在类的父类。计算机科学与技术系计算机科学与技术系29单继承单继承 Java是单继承的,即只能从一个类继承,是单继承的,即只能从一个类继承,extends后类名只能有一个。后类名只能有一个。单继承的优点:单继承的优点:代码更可靠代码更可靠可以用接口弥补可以用接口弥补 用一个类实现多个接口,达到多继承效果。用一个类实现多个接口,达到多继承效果。计算机科学与技术系计算机科学与技术系30Super关键字关键字Super指向该关键字所在类的父类。指向该关键字所在类的父类。Public class Empolyee private String name;private int salary;public String getDetails()return“Name:”+name+“nSalary:”+salary;public class Manager extends Empolyee private String department;public String getDetails()return super.getDetailes()+nDepartment:“+department;计算机科学与技术系计算机科学与技术系31子类对象的创建和实例化子类对象的创建和实例化在对对象初始化时,分三步:在对对象初始化时,分三步:分配空间,并初始化为分配空间,并初始化为“0”值。值。按继承关系从顶向下显式初始化。按继承关系从顶向下显式初始化。按继承关系从顶向下调用构造方法。按继承关系从顶向下调用构造方法。计算机科学与技术系计算机科学与技术系32调用父类构造方法调用父类构造方法缺省是不带参数的构造方法。缺省是不带参数的构造方法。如果需要调用特殊的父类构造方法,则需在如果需要调用特殊的父类构造方法,则需在子类构造方法中第一行通过子类构造方法中第一行通过super()调用。调用。class Employee.public Employee(String n)name=n;class Manager entends Emplyeepublic Manager(String s,String d)super(s);.计算机科学与技术系计算机科学与技术系33计算机科学与技术系计算机科学与技术系l子类的构造过程中必须调用其父类的构造方法。子类的构造过程中必须调用其父类的构造方法。l子类可以在自己的构造方法子类可以在自己的构造方法super(参数列表参数列表)调用父类调用父类的构造方法。的构造方法。l使用使用this(参数列表参数列表)调用本类的另外的构造方法。调用本类的另外的构造方法。l如果调用如果调用super(参数列表参数列表),则必须写在子类构造方法,则必须写在子类构造方法的第一行。的第一行。class SuperClass private int n;SuperClass()System.out.println(SuperClass();SuperClass(int n)System.out.println(SuperClass(+n+);this.n=n;34计算机科学与技术系计算机科学与技术系l子类的构造过程中必须调用其父类的构造方法。子类的构造过程中必须调用其父类的构造方法。l子类可以在自己的构造方法子类可以在自己的构造方法super(参数列表参数列表)调用父类调用父类的构造方法。的构造方法。3.11继承中的构造方法继承中的构造方法l使用使用this(参数列表参数列表)调用本类的另外的构造方法。调用本类的另外的构造方法。l如果调用如果调用super(参数列表参数列表),则必须写在子类构造方法,则必须写在子类构造方法的第一行。的第一行。class SubClass extends SuperClass private int n;SubClass()super(300);System.out.println(SubClass();SubClass(int n)System.out.println(SubClass(+n+);this.n=n;public class TestSuperSub public static void main(String args)SubClass sc1=new SubClass();SubClass sc2=new SubClass(4000);输出结果:SuperClass(300)SubClass()SuperClass()SubClass(4000)35计算机科学与技术系计算机科学与技术系l子类的构造过程中必须调用其父类的构造方法。子类的构造过程中必须调用其父类的构造方法。l子类可以在自己的构造方法子类可以在自己的构造方法super(参数列表参数列表)调用父类调用父类的构造方法。的构造方法。3.11继承中的构造方法继承中的构造方法l使用使用this(参数列表参数列表)调用本类的另外的构造方法。调用本类的另外的构造方法。l如果调用如果调用super(参数列表参数列表),则必须写在子类构造方法,则必须写在子类构造方法的第一行。的第一行。class Bread Bread()System.out.println(Bread();class Lunch Lunch()System.out.println(Lunch();class PortableLunch extends Lunch PortableLunch()System.out.println(PortableLunch();class Sandwich extends PortableLunch private Bread b=new Bread();public Sandwich()System.out.println(Sandwich();public static void main(String args)new Sandwich();364.5.24.5.2重写(重写(Overriding)Overriding)子类可以改变从父类继承的行为。子类可以改变从父类继承的行为。被重写方法的返回值、方法名、参数列表要被重写方法的返回值、方法名、参数列表要 与父类中的方法完全一样。与父类中的方法完全一样。计算机科学与技术系计算机科学与技术系37方法重写的规则方法重写的规则必须返回与原来方法完全相同的返回值。必须返回与原来方法完全相同的返回值。方法的访问权限不能缩小。方法的访问权限不能缩小。不能抛出新的异常。不能抛出新的异常。计算机科学与技术系计算机科学与技术系38计算机科学与技术系计算机科学与技术系重写重写和和重载是重载是Java多态性的不同表现。多态性的不同表现。重写重写是父类与子类之间多态性的一种表现,重载是是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和如果在子类中定义某方法与其父类有相同的名称和参数,称该方法被参数,称该方法被重写重写。子类的对象使用这个方法。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定时,将调用子类中的定义,对它而言,父类中的定义如同被义如同被“屏蔽屏蔽”了。了。如果在一个类中定义了多个同名的方法,它们或有如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法不同的参数个数或有不同的参数类型,则称为方法的的重载重载重写重写(override)(override)和重载和重载(oveload)(oveload)的区别的区别:39 Java允许父类对象的引用作为子类对象的引用使用。允许父类对象的引用作为子类对象的引用使用。如:如:Employee e=new Manager();u 但通过该变量但通过该变量(如如e)只能访问父类的方法,子类特有的只能访问父类的方法,子类特有的 部分被隐藏。部分被隐藏。运运行行时时多多态态:当当子子类类对对父父类类方方法法重重写写时时,运运行行时时确确定定使用父类还是子类的方法。使用父类还是子类的方法。Employee e=new Manager();e.getDetails();u运行时多态性的优点:程序具有良好的可扩展性运行时多态性的优点:程序具有良好的可扩展性4.5.3 4.5.3 运行时多态运行时多态计算机科学与技术系计算机科学与技术系404.5.4 4.5.4 对象对象类型强制转换类型强制转换 Instanceof运算符运算符:测试对象类型:测试对象类型 Empolyee a=new Manager();则则 a instanceof Manager 为为true;类型转换类型转换 父类弱、子类强,指向父类的引用不能直接按子类引用,父类弱、子类强,指向父类的引用不能直接按子类引用,必须要强制类型转换后才能作为子类的引用使用。必须要强制类型转换后才能作为子类的引用使用。例:例:public void method(Employee e)if(e instanceof Manager)Manager m=(Manager)e;m.department=“”;计算机科学与技术系计算机科学与技术系414.5.5 Object4.5.5 Object类类Object类是类是JAVA平台中类层次树的根。定义了所有平台中类层次树的根。定义了所有对象都需要的状态和行为。如对象之间的比较、将对象对象都需要的状态和行为。如对象之间的比较、将对象转换为字符串、等待某个条件变量、当某条件变量改变转换为字符串、等待某个条件变量、当某条件变量改变时通知相关对象以及返回对象的类。时通知相关对象以及返回对象的类。计算机科学与技术系计算机科学与技术系42在在ObjectObject子类中可以重写的方法:子类中可以重写的方法:CloneClone()()EqualsEquals()()finalizefinalize()()toStringtoString()():返回对象的字符串表示,表达的内容因具体的对象:返回对象的字符串表示,表达的内容因具体的对象而异而异 在在ObjectObject子类中不能重写的方法:子类中不能重写的方法:getClassgetClass()()notifynotify()()notifyAllnotifyAll()()waitwait()()4.5.5 Object 4.5.5 Object 类类计算机科学与技术系计算机科学与技术系43

    注意事项

    本文(Java面向对象特性.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开