java面向对象高级编程

上传人:tian****1990 文档编号:75667468 上传时间:2019-01-31 格式:PPT 页数:27 大小:454.81KB
返回 下载 相关 举报
java面向对象高级编程_第1页
第1页 / 共27页
java面向对象高级编程_第2页
第2页 / 共27页
java面向对象高级编程_第3页
第3页 / 共27页
java面向对象高级编程_第4页
第4页 / 共27页
java面向对象高级编程_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《java面向对象高级编程》由会员分享,可在线阅读,更多相关《java面向对象高级编程(27页珍藏版)》请在金锄头文库上搜索。

1、Java 基础培训,第6章 Java面向对象高级编程,2,6.1.1 类的继承-继承的概念,继承是程序中两个类间的一种关系 指明继承关系后,父类中的属性(成员)就无须在子类中重复描述,从而实现了一定程度的代码的重用,在Java的继承层次中,一个父类可以有多个直接子类,但一个子类只能有一个直接父类,即Java不支持多重继承,3,6.1.2 类的继承-类继承的实现,继承的实现 格式: 修饰符 class 新定义的类名 extends 父类名 例:class SubRectangleA extends RectangleA 子类继承父类的原则 直接子类继承那些被声明为public或protected

2、的直接父类成员。 直接子类继承同一包中父类里未被访问控制符修饰(默认的friendly)的成员变量和成员方法。 子类不能继承父类中被private修饰的成员变量和成员方法。 若子类中声明了一个与父类中同名的成员变量或成员方法,则子类不再继承该父类中的该同名的成员变量或成员方法。 下页介绍构造方法的继承,4,6.1.2 类的继承-类继承的实现,构造方法的继承 若父类是无参数的构造方法,则子类无条件地继承该构造方法。 若子类无自己的构造方法,则它将继承父类的无参数构造方法作为自己的构造方法;若子类有自己的构造方法,则在创建子类对象时,它将先执行继承自父类的无参数构造方法,然后再执行自己的构造方法。

3、 若父类是有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来调用它,但这个调用语句必须是子类构造方法的第一个可执行语句。,5,6.1.3 类的继承-变量的隐藏,子类对从父类那里继承来的变量重新加以定义称为变量的隐藏。 当在子类中定义了与父类中同名的成员变量时,若在子类中访问此变量,则父类中的同名变量被隐藏,访问的是子类中定义的同名变量,好像此变量在父类中不存在一样。 如果一定要引用父类中这个同名变量,可以使用super关键字来指示。,6,6.1.4 类的继承-方法的覆盖,子类继承父类后可以定义自己的成员变量和方法,当子类定义了与父类中同名的方法时,则父类中的方法被覆盖,即方

4、法的结果是子类方法的执行结果。,7,6.1.4 类的继承-super和this,this 代表它所在的类本身的实例对象 区分形参名及成员变量名 可用this来调用它所在的类本身的构造方法 super代表它所在类的直接父类对象 访问父类的成员变量及方法 调用父类的构造方法,8,6.2.1 类的多态-方法的重载,在同一个类中,以相同的名字定义多个方法,只是参数列表不同,即为方法的重载。 它实现了Java编译时的多态性(静态多态性)。也就是说,程序可以按参数决定调用对应方法,而此决定是由编译器来做的,即在调用时,Java将根据实参个数或参数类型选择匹配的方法。,9,6.3.1 接口-接口的概念,接口

5、又称界面,英文名称为interface,它是用来组织应用中的各类并调节它们的相互关系的一种结构,是用来实现类间多重继承的结构。 Java中的接口是一种特殊的类,它定义了若干抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一组功能的实现。 多重继承:是指一个子类可以有一个以上的直接父类,该子类可以继承它所有直接父类的成员。,10,6.3.2 接口-接口的声明,格式: public interface 接口名extends 父接口名列表 /接口体 /常量域声明 public static final 域类型 名称=常量值; /抽象方法的声明 public abstract native 方

6、法返回值类型 方法名(参数列表)throws 异常列表 ,11,6.3.2 接口-接口的声明,interface是定义接口的关键字。 接口名只要符合Java对标识符的规定即可。 接口的访问控制符只有一个,即public,用此修饰的接口为公共接口,可以被所有类和接口使用,而没有被public修饰的接口则只能被同一个包中的其他类和接口利用。 接口具有继承性。定义一个接口时可以通过extends声明该新接口是某个已经存在的父接口的派生接口,它将继承父接口的所有属性和方法。与类不同的是一个接口可以有一个以上的父接口,它们之间用逗号分隔,形成父接口列表。新接口将继承所有父接口中的属性和方法。 接口体的声

7、明是定义接口的重要部分。接口体由两部分组成,一部分是对接口中属性的声明,另一部分是对接口中方法的声明。 接口中的所有属性都必须是public static final修饰的,这是系统默认的规定。所以接口属性也可以没有任何修饰符,其效果完全相同。 接口中的所有方法都必须是抽象方法。,12,6.3.3 接口-接口的实现,一个类要实现某个或某几个接口时,有如下的步骤和注意事项: 在类的声明部分,用implements关键字声明该类将要实现哪些接口。 如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方法体,而且方法头部分应该与接口中的

8、定义完全一致,即有完全相同的返回值和参数列表。 如果实现某接口的类是抽象类,则它可以不实现该接口所有的方法,但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法都必须有实在的方法体。这些方法体可以来自抽象的父类,也可以来自子类本身,但是不允许存在未被实现的接口方法。,13,6.3.3 接口-接口的实现,一个类要实现某个或某几个接口时,有如下的步骤和注意事项: 一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。如果所实现的方法与抽象方法有相同的方法名和不同的参数列表,则只是重载一个新的方法,而不是实现已有的抽象方法。 接口的抽象方法,其访问限制符都已指定是pu

9、blic,所以类在实现方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口中定义的方法和访问控制范围。,14,6.4 包,包将类和接口封装在一起,便于在量类和接口的管理,并有利于类和接口的安全。 在同一个包中不允许出现同名类,不同包中可以存在同名类。 6.4.2 包的引用 导入包的关键字import 在java程序中,如果有package语句,则import语句紧接在其后,否则import语句应该在程序首位。 如果没有import语句,则使用某个包中的类时,需要类的全名来引用。 例如: java.awt.Label prompt = new java.awt.Label(“请

10、输入”);,15,6.4.1 包-包的创建,package com.test.something; 必须和目录结构相吻合,16,6.4.2 包-包的引用,导入包的关键字import 在java程序中,如果有package语句,则import语句紧接在其后,否则import语句应该在程序首位。 如果没有import语句,则使用某个包中的类时,需要类的全名来引用。 例如: java.awt.Label prompt = new java.awt.Label(“请输入”);,17,6.4.2 包-包的引用, import 包名; import java.awt; awt.Label prompt=n

11、ew awt.Label(“请输入”); import 包名.类名; import java.awt.Label; Label prompt=new Label(“请输入”); import 包名.*; import java.awt.*; Label prompt=new Label(“请输入”); 说明:这种形式使得包中的所有类都可以被直接用类名来访问,但同时会浪费内存的开销。,18,6.5.1 Java的类库-类库简介,为了简化面向对象编写程序的过程,Java系统事先设计并实现了一些体现了常用功能的标准类,如用于输入/输出的类、用于数学运算的类、用于图形用户界面设计的类、用于网络处理的类

12、等。这些系统标准类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。 类库以包的形式组织,是包的集合。 下页介绍常见包:,19,6.5.1 Java的类库-类库简介,java.lang包 java.lang包是Java语言的核心类库,包含运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动导入java.lang包,所以这个包的加载是默认的,不需要用import语句来专门导入。 java.io包 java.io包是Java语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及与其

13、他Java程序做数据交互所使用的类,如基本输入/输出流、文件输入/输出流、过滤输入/输出流、管道输入/输出流等。凡是需要完成与操作系统有关的较低层的输入/输出操作的Java程序,都用到这个包。 java.util包 java.util包中包括了Java语言中一些低级的实用工具,如处理时间的Date类、处理变长数组的Vector类等,使用它们,开发者可以更方便、快捷地编程。,20,6.5.1 Java的类库-类库简介,java.awt包 java.awt包是Java语言用来构建图形用户界面(GUI)的类库,它包括了许多界面元素和资源,主要在三个方面提供界面设计支持:低级绘图操作,如Graphic

14、s类等;图形界面组件和布局管理,如Checkbox类、Container类、LayoutManager接口等;以及界面用户交互控制和事件响应,如Event类。利用java.awt包,开发人员可以很方便地编写出美观、方便标准化的应用程序界面。 javax.swing包 javax.swing包提供了创建图形用户界面元素的类,通过这些元素,编程者可以控制所写的Applet或应用程序的外观界面。该包中包含定义窗口、对话框、按钮、复选框、列表、菜单、滚动条和文本域的类,用此包来实现图形用户界面比java.awt包要方便、美观。 包 包是Java语言用来实现网络功能的类库,如URL、Socket类等。,

15、21,6.5.2 Java的类库-语言基础类库,Object类 Object类是Java程序中所有类的直接或间接父类,也是类库中所有类的父类。所有其他类都是从Object 类派生出来的,所以Object类包含了所有Java类的公共属性,其中较主要的有以下一些方法: protected Object clone()用来生成当前对象的一个备份,并返回这个复制对象。 public boolean equals(Object obj)用来比较两个对象是否相同,是则返回true。 public final class getClass()用来获取当前对象所属的类信息,返回class对象。 protect

16、ed void finalize()用来定义回收当前对象时所需完成的清理工作。 public String toString()用来返回当前对象本身的有关信息,按字符串对象返回。,22,6.5.2 Java的类库-语言基础类库,数据类型类 在第2章中已经介绍了Java的基本数据类型,如int、double、char、long等。 数据类型类与基本数据类型密切相关,每一个数据类型类都对应了一个基本数据类型,它的名字也与这个基本数据类型的名字相似不同的是数据类型类是一个类,有自己的方法,这些方法主要用来操作和处理它所对应的基本数据类型量。 下页介绍数据类型类中的Integer,23,6.5.2 Java的类库-语言基础类库,Integer类中定义了MAX_VALUE和MIN_VALUE两个属性及一系列的方法1: 1 MAX_VALUE域和MIN_VALUE域分别规定了int整型量的最大值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号