Java面向对象编程.ppt_第1页
Java面向对象编程.ppt_第2页
Java面向对象编程.ppt_第3页
Java面向对象编程.ppt_第4页
Java面向对象编程.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java的面向对象编程 q 面向对象程序设计 q 封装 q 继承 q 多态 q 接口 q 内部类 面向对象程序设计 1、类和对象:对象类; 2、面向过程和面向对象的比较; 3、面向对象编程(OOP) 简单的说,OOP描述的是对象之间的相互 作用。 4、面向对象程序设计的基本特征:封装、继承 、多态 面向对象程序设计概述 q 面向对象程序设计 面向对象程序设计 封装就是包装,所有的属性和方法都要封 装到类中,封装是面向对象编程的基本特征 之一。 1、实现数据隐藏; 2、行为不可见; 3、高效传递数据。 封装的特点 q 封装 Java的面向对象编程 this的使用 1、this变量代表对象本身 2、当类中有两个同名变量,一个属于类(类的成 员变量),而另一个属于某个特定的方法(方法 中的局部变量),使用this区分成员变量和局部 变量。 3、使用this简化构造方法的调用。 1、销毁对象有两种方式:自动销毁和手动调用 System.gc()方法; 2、finalize()方法的使用。 销毁对象(垃圾回收) Java的面向对象编程 1、构造方法的名字和类名相同,并且没有返回值 。 2、构造方法用于为创建类的对象并对其初始化。 3、我们不能直接调用构造方法,必须通过new关 键字来调用,从而创建类的实例。 4、Java的类都要求有构造方法,如果没有定义构 造方法,Java编译器会为我们提供一个缺省的构 造方法,也就是不带参数的构造方法。 5、当我们用缺省的构造方法初始化对象时,成员 变量没有显式初始化时,系统用默认值初始化对 象的成员变量。 6、每个类通常有一个无参构造方法。 构造方法(初始化) Java的面向对象编程 q 继承 1、在Java中,定义类时可以通过关键字extends 继承一个已有的类,被继承的类称为父类(超类 ,基类),新定义的类称为子类(派生类);继 承是“is a”的关系; 2、在Java中,不允许多继承; 3、Java中Object类是所有类的父类; 4、理解继承是理解面向对象程序设计的关键,实 现代码复用,多态的基础。 继承的概念 Java的面向对象编程 1、子类可以继承父类中被声明为public、 protected的成员变量和方法,不能继承父类中被 声明为private的成员变量和方法; 2、如果子类声明了一个与父类同名的成员变量,则 此时子类拥有了两个名字相同的成员变量,此时我 们称子类的成员变量隐藏了父类的成员变量; 3、如果子类声明了一个与父类同名的成员方法,此 时我们称子类的成员方法覆盖了父类的成员方法。 继承原则 带有继承的构造方法 Java的面向对象编程 1、子类不能继承父类的构造方法; 2、如果子类的构造方法中没有明确调用父类的 构造方法,则系统在执行子类的构造方法时会 自动调用父类的无参构造方法; 3、子类构造方法中显示调用父类的构造方法, 则调用语句必须是构造方法的第一条语句。 Java的面向对象编程 super的使用 1、特殊变量super,提供了对父类的访问。 2、可以使用super访问父类被子类隐藏的变量 或覆盖的方法。 3、每个子类构造方法的第一条语句,都是隐含 地调用super(),如果父类没有这种形式的构 造函数,那么在编译的时候就会报错。 Java的面向对象编程 4、构造方法只能通过以下方式被调用: 1)在程序中通过new语句调用它; 2)当前类的其他构造方法通过this语 句调用它 ; 3)当前类的子类的构造方法通过 super语句调用它 。 Java的面向对象编程 静态代码块是由关键字static引导的一 对大括号括起的语句块。静态语句块只执行 一次。作用是:在加载时,初始化类的静态 变量等。 与构造方法相同,他们都是用来完成初 始化的工作,但是静态代码块与构造方法有 三点不同: 静态代码块 Java的面向对象编程 1)构造方法是对每个新创建的对象初始化 ,而静态代码块是对类自身进行初始化。 2)构造方法是在用new运算符产生新对象 时由系统自动执行,而静态代码块则是在它 所属的类加载到内存时由系统调用执行。 3)不同于构造方法,静态代码块不是方法 ,没有方法名、返回值和参数列表。 Java的面向对象编程 类的组合 1、软件中的对象有简单对象和复杂对象之分; 2、复杂对象的数据成员可以是引用类型; 3、组合就是将已经存在的类的对象放到新类中 ,组合表示的“has a”的关系。 Java的面向对象编程 Object类 1、Object是Java程序中所有类的父类; 2、Object类中主要的方法:getClass()、toString() 、equals(Object obj)、hashCode()、finalize(); 3、对象相等:两个对象具有相同的类型和相同的属 性值;对象同一:两个引用指向同一个对象。如 果两个对象同一那么这两个对象一定相等,反之 不成立; 4、toString()、equals(Object obj)及“=”的使 用。 类类型public无修饰饰符default 同一包中的类类 不同包中的类类 类修饰符与访问权限关系 : Java的面向对象编程 访问修饰符 类成员修饰符与访问权限关系 : Java的面向对象编程 类类型public无修饰饰符protectedprivate 同一类类 同一包中的子类类 同一包中的非子类类 不同一包中的子类类 不同一包中的非子类类 Java的面向对象编程 String和StringBuffer 1、String类的两种实例化对象的方式; 2、String String strstr=“=“abcabc”;”; intint i=3; i=3; float f=4.5f; float f=4.5f; char char chch=a;=a; booleanboolean b=true; b=true; System.out.println(strSystem.out.println(str + i + f + + i + f + chch + b); + b); 3 3、针对、针对StringString的的“ “+”+”和和“ “+=”+=”,是,是JavaJava中唯一被重中唯一被重 载的操作符;在载的操作符;在JavaJava中,不允许程序员重载操作符中,不允许程序员重载操作符 。 Java的面向对象编程 String和StringBuffer 4 4、StringString类对象一个常量对象。类对象一个常量对象。 String String strstr=“=“abcabc”;”; strstr=“def”;=“def”; 5 5、在处理大量字符串的程序中,我们通常用、在处理大量字符串的程序中,我们通常用 StringBufferStringBuffer来替代来替代StringString。 Java的面向对象编程 1、在类中没有方法体的方法,就是抽象方法。 2、含有抽象方法的类,即为抽象类。 3、如果一个子类没有实现抽象基类中所有的抽 象方法,则子类也成为一个抽象类。 4、我们可以将一个没有任何抽象方法的类声明 为abstract,避免由这个类产生任何的对象。 5、构造方法、静态方法、私有方法、final方法 不能被声明为抽象的方法。 抽象方法和抽象类 q 接口 Java的面向对象编程 接口的概念 接口的两种含义:一是Java接口,Java语 言中存在的结构,有特定的语法和结构;二是一 个类所具有的方法的特征集合,是一种逻辑上的 抽象。 Java中的接口是一系列方法的声明,是一些 方法特征的集合,一个接口只有方法的特征没有 方法的实现,因此这些方法可以在不同的地方被 不同的类实现,而这些实现可以具有不同的行为 。 Java的面向对象编程 接口的定义 访问修饰符非访问修饰符 class ClassName extends 超类名称implements 接口名称列表 方法声明及方法体; 接口的实现 访问修饰符 interface 接口名 extends 父接口列表 publicstaticfinal 常量; publicabstract 方法; Java的面向对象编程 1、接口中所有的方法都是public abstract,接口比抽象类 更抽象,不能实例化对象。 2、在接口中声明方法时,不能使用native、static 、final 、synchronized 、private 、protected等修饰符。 3、和public类一样,public接口也必须定义在与接口同名 的文件中。 4、接口中可以有数据成员,这些成员默认都是public static final。 5、一个接口可以继承自另一个接口。 6、Java中不允许类的多继承,但允许接口的多继承。 7、在Java中,一个类可以实现多个接口。 8、一个类在继承另外一个类的同时,可以实现一个或者多 个接口。 Java的面向对象编程 塑形引用类型之间类型转换 1、引用类型之间的转换有三种:转化为父类型 ,转化为对象所属类实现的接口类型,回到自 己的类型; 2、基本数据类型的转换是从一种形式转化为另 一种形式的过程,而塑形是将并不是真正的类 型转化,只是暂时将对象当作另一种类型对象 来看待; 3、塑形的应用。 Java的面向对象编程 方法重载 重载构成的条件:定义在同一个类中方法 的名称相同,但参数类型,参数顺序或参数个 数不同,返回类型无关紧要。 方法覆盖 q 多态 1、在子类中定义一个与父类同名、返回类型、 参数类型均相同一个方法,称为方法的覆盖。 2、覆盖发生在子类与父类之间。 Java的面向对象编程 3、子类不能覆盖父类中被声明为final的方法; 4、子类必须覆盖父类中声明为abstract的方法, 或者子类的方法也声明为abstract; 5、子类覆盖后的方法的访问权限一定大于或等于 父类中被覆盖方法的访问权限; 6、子类覆盖后的方法抛出的异常一定小于或等于 父类中被覆盖方法抛出的异常。 Java的面向对象编程 多态 1、执行对象方法时,不知道一个对象在运行时的具体类 型是什么,但是运行是正确的,称为多态性; 2、多态分为静态多态和动态多态,分别有重载和覆盖实 现,多态多指动态多态; 2、通过覆盖父类的方法实现多态,在运行时根据传递的 对象引用,来调用相应的方法; 3、当我们将子类对象传递给父类声明的对象时,使用对 象调用方法时,如果子类具有该方法,则执行子类的 方法;如果子类没有该方法则执行父类的方法; 4、另外,接口也可以实现多态。 Java的面向对象编程 内部类的概念 1、在一个类中定义另外一个类,这个类就叫做内部类或内 置类 (inner class) 。 2、内部类可以让我们将逻辑上相关的一组类组织起来,并 由外部类(outer class)来控制内部类的可见性,内部类可 以访问外部类的私有成员。 3、当我们建立一个内部类时,其对象就拥有了与外部类对 象之间的一种关系,这是通过一个特殊的this reference 形成的,使得内部类对象可以随意的访问外部类中所有的 成员。 q 内部类 Java的面向对象编程 1、实例内部类又称常规内部类,在常规内部类不能声明静 态的成员,只有在顶层类或static的内部类中才可声明 static成员; 2、在方法中定义的内部类,称为局部内部类;如果要访问 方法中定义的本地变量或方法的参数,则变量必须被声明 final

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论