Java面向对象程序设计复习:继承、包与访问控制

版权申诉
5星 · 超过95%的资源 1 下载量 90 浏览量 更新于2024-06-25 收藏 185KB PPTX 举报
"java期末复习第讲面向对象程序设计.pptx" 本讲主要涵盖了Java面向对象程序设计中的关键概念,包括包、继承以及访问控制。以下是这些知识点的详细解析: 1. **包(Package)** - 包是Java中组织类的一种机制,它是由`.class`文件组成的集合,可以看作是类的容器,用于划分类名空间,避免命名冲突。 - 定义包的语法是`package pkg1[.pkg2[.pkg3…]];`,例如`package com.javaworld;`。包名通常采用反向域名形式,保持全局唯一性。 - 没有明确指定包的类将位于默认的无名包中。 - 包的物理结构对应于文件系统的目录结构,例如`package com.sun.java;`对应的目录应为`com\sun\java`(Windows系统)。 - 使用`import`语句可以引入包中的类,全量导入(如`import java.awt.*;`)方便但可能占用更多内存,推荐按需导入。 2. **访问控制** - Java提供了四种访问权限:public、protected、default(包级私有)和private。private成员仅在定义它的类内部可访问,是封装的重要工具。 3. **继承(Inheritance)** - 继承是面向对象编程的核心特性之一,允许创建一个新类(子类)从已有类(超类)派生,以便复用和扩展代码。 - 子类继承超类的属性和方法,可以增加自己的特性和重写超类的方法。 - Java中所有类都隐式或显式地继承自`Object`类。 - 继承有助于代码的组织和提高代码的复用性,通过多态性实现更灵活的设计。 4. **方法重载(Overloading)和方法重写(Overriding)** - 方法重载是指在同一个类中可以有多个同名方法,但参数列表不同(参数数量、类型或顺序不同)。 - 方法重写发生在子类中,子类重新定义超类中的方法,保持相同的名称、返回类型和参数列表,但可能有不同的实现。 5. **类路径(CLASSPATH)** - 类路径用于Java解释器查找`.class`文件的位置,编译时和运行时都需要设置。 - 编译时使用`javac -d CLASSPATH路径 Myclass.java`,运行时使用`java 包名.类名`来执行特定包下的类。 此外,还提到了几个常用的Java包: - `java.lang`:包含基础类,如`String`、`Math`、`Integer`等。 - `java.awt`:提供GUI组件和事件处理。 - `java.applet`:支持Applet的类。 - `java.net`:网络通信相关的类。 - `java.io`:输入/输出流及相关类。 - `java.util`:包含各种实用工具类,如集合框架、日期时间等。 掌握这些基本概念对于理解和编写面向对象的Java程序至关重要。在实际编程中,合理使用包、继承和访问控制能够提高代码的可读性、可维护性和可扩展性。同时,正确理解和应用方法重载和重写是实现多态性的重要手段。
2023-05-29 上传
教学目标 理解数据抽象和数据隐藏 创建类 能够创建和使用对象 能够控制对实例变量和方法的访问 方法的重载 构造函数的使用 理解this引用的用法 理解Java的垃圾收集机制 static方法和域的使用 类的组合 包的创建和使用 第1页/共37页 java面向对象程序设计全文共37页,当前为第1页。 4.1 面向对象程序设计的思想 4.1.1 OOP思想 4.1.2 用类实现抽象数据类型:时钟类 4.1.3 类成员:构造函数、方法和域 第2页/共37页 java面向对象程序设计全文共37页,当前为第2页。 4.1.1 OOP思想 面向对象编程技术 将数据及对数据的操作封装在一起而形成了类,类是描述相同类型的对象集合。 。面向对象编程(object-oriented programming,OOP)就是定义这些类。 类作为抽象的数据类型用于创建类的对象。 程序的执行,表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。对象的公共接口是该对象的应用程序编程接口(Application Programming Interface,API),把对象的内部详细信息隐藏起来,使得对象变得抽象,将这种技术称为数据的抽象化。 Java语言是完全面向对象的语言,程序的结构由一个以上的类组成。所有的过程都被封装起来,并将它们称之为方法。 第3页/共37页 java面向对象程序设计全文共37页,当前为第3页。 4.1.2 用类实现抽象数据类型:时钟类 类作为一种抽象的数据类型,封装了对象的数据属性和动态行为,被用来定义类的对象。 下面我们将通过一个具体的实例来理解什么是类,如何定义类、创建对象和使用对象。 时钟类的设计: (1) 数据属性: 时(int hour); 分 (int minute); 秒(int second)。 (2) 行为: 设置时间 setTime() ; 显示时间 toUniversalString() 、 toStandardString() ; 走时 (暂时不考虑); 第4页/共37页 java面向对象程序设计全文共37页,当前为第4页。 4.1.2 用类实现抽象数据类型:时钟类(续) 例4-1 时钟类的实现。 该例子包含两个文件Time1.java和TimeTest1.java。 Time1.java是用于定义时钟类。 TimeTest1类是一个用于测试时钟类的包含main方法的主类,在main方法中将创建Time1类的一个对象,并调用对象的公共方法。 第5页/共37页 java面向对象程序设计全文共37页,当前为第5页。 4.1.2 用类实现抽象数据类型:时钟类(续) Time1.java文件的代码如下: import java.text.DecimalFormat; public class Time1 extends Object { private int hour; private int minute; private int second; public Time1(){ setTime( 0, 0, 0 ); } public void setTime( int h, int m, int s ){ hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); } 时 分 秒 设置时间 第6页/共37页 java面向对象程序设计全文共37页,当前为第6页。 4.1.2 用类实现抽象数据类型:时钟类(续) public String toUniversalString(){ //toUniversalString方法以24时制格式显示时间 DecimalFormat twoDigits = new DecimalFormat( "00" ); return twoDigits.format( hour ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ); } public String toStandardString(){ //toStandardString方法以12时制格式显示时间 DecimalFormat twoDigits = new DecimalFormat( "00" ); return ( (hour == 12 "" hour == 0) ? 12 : hour % 12 ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.f