专题三 面向对象程序设计(二)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)

2024-09-18
| 13页
| 158人阅读
| 1人下载
精品

内容正文:

面向对象程序设计(二) [考纲要求] 考试内容: 抽象类;封装、继承、多态;访问权限。 知识点要求: 1.封装、继承、多态的基本概念。。 4.掌握类的继承、子类的声明、super、this、方法覆盖。 5.掌握类的访问权限:default、public;掌握类成员的访问权限:public、private、protected、default。 6.掌握抽象类abstract类、abstract方法和接口的声明;了解接口的实现。 [课时安排] 2课时 [知识梳理] 一.封装 封装就是类的设计者只为使用者提供类对象可以访问的部分(包含类的成员变量和 方法),而对于类中其他成员变量和方法都隐藏起来,用户不能访问。 封装涉及的几个方面: (1)在类的定义中设置对对象中的成员变量和方法进行访问的权限; (2)提供一个统一供其他类引用的方法; (3)其他对象不能直接修改本对象所拥有的属性和方法。 Java提供了四种访问修饰符,用于控制类、方法和变量的访问级别。 封装的好处 (1)隐藏实现细节:外部不需要知道类的内部是如何工作的,只需要通过暴露的接口来使用类。 (2)提高安全性:通过设置访问权限,可以防止外部直接访问和修改类的内部状态。 (3)提高易用性:对外提供简单的接口,使得类更易于使用。 (4)便于修改和维护:由于外部只能通过接口与对象交互,因此在修改实现时,只要接口保持不变,就不会影响到其他代码。 封装步骤 (1)私有化成员变量 将类的成员变量设置为私有,这样就不能直接从类的外部访问和修改这些变量。 (2)提供公共的访问方法(getter和setter) 提供公共的方法来获取(getter)和设置(setter)私有变量的值。 3. 构造方法 可以使用构造方法来初始化对象的状态。 二.继承 Java的继承是面向对象编程中的一个核心概念,允许根据现有的类创建新的类。新的类称为子类(或派生类),而被继承的类称为父类(或基类、超类)。子类继承了父类的方法和状态,同时还可以添加新的方法和状态,或者覆盖(override)父类的方法。 继承的基本语法 在Java中,继承通过 extends 关键字实现。 继承的特点 (1)单继承:Java不支持多重继承,一个类只能有一个直接父类。 (2)传递性:如果类A继承自类B,类B继承自类C,那么类A也间接继承类C。 继承的好处 (1)代码复用:子类可以复用父类的方法和属性,减少代码冗余。 (2)扩展性:子类可以添加新的方法或属性,对父类进行扩展。 (3)维护性:通过继承,可以集中处理共有的行为和属性,便于维护 继承的限制 (1)私有成员不可继承:子类不能继承父类的私有成员(private),但可以继承父类的公有(public)、受保护的(protected)和默认(default)成员。 (2)构造方法不可继承:子类不能继承父类的构造方法,但可以在子类的构造方法中通过 super 关键字调用父类的构造方法。 方法覆盖(Override) 子类可以覆盖父类的方法,以提供不同的实现。使用 @Override 注解可以明确表示覆盖意图,并且编译器会检查这个注解。 案例操作: Dog 类继承了 Animal 类,因此 Dog 类的对象可以调用 Animal 类的 eat 方法,同时也可以调用 Dog 类自己的 bark 方法。 三.多态 多态是指Java 运行时的多态性,是面向对象程序设计中实现代码重用的一种机制。 Java 实现多态的基础是动态方法调用,即父类某个方法被其子类重载时,可以产生自己的功能行为。 多态分类:多态有两种类型: 编译时多态(方法重载)和运行时多态(方法覆盖)。 多态实现的三个条件 (1)有继承关系(2)有方法的覆盖(3)有父类引用指向子类对象 多态的用法: (1)使用父类声明作为方法的形参,子类对象作为实参传入。 (2)使用父类声明的数组存储子类的对象。 四.抽象类 在Java中,抽象类是一种特殊的类,它不能被实例化,但可以包含抽象方法(没有实现体的方法)和具体实现的方法。抽象类通常用于定义一些公共接口和部分实现,然后由子类继承并实现剩余的部分。 抽象类的定义 抽象类使用 abstract 关键字来定义。可能包含抽象方法也可能不包含,但是一旦类包含了抽象方法,该类就必须被声明为抽象类。 抽象方法 抽象方法是不包含实现体的方法,它只有方法签名和一个分号。抽象方法也用 abstract 关键字声明。 抽象类的特点 (1)抽象类不能被实例化,即不能使用 new 关键字创建对象。 (2)抽象类可以包含具体实现的方法和抽象方法。 (3)抽象类可以有构造器。 (4)抽象类可以包含成员变量,包括非final变量。 (5)抽象类可以继承另一个抽象类,并且可以添加新的抽象方法或实现。 (6)一个类继承一个抽象类后,必须实现抽象类中的所有抽象方法,除非它自己也声明为抽象类。 抽象类的用途 (1)提供公共接口:抽象类可以定义一组接口,然后由子类根据具体情况实现。 (2)部分实现:抽象类可以提供一些方法的实现,子类可以选择性地覆盖这些方法或使用默认实现。 (3)强制子类实现特定方法:通过定义抽象方法,抽象类可以强制子类实现特定的方法。 案例: 五.接口 在Java中,接口(Interface)是一种引用类型,类似于类,用于存放抽象方法和静态常量。接口定义了一个规范,规定了实现接口的类应具备哪些方法。这提供了一种标准化的方式来保证不同的类能够相互配合、交互。 接口的定义 接口使用 interface 关键字来定义。接口中可以包含抽象方法和静态常量。 接口的特点 (1)接口中只能定义抽象方法和静态常量。抽象方法没有方法体,静态常量必须是初始化的。 (2)接口不能被实例化,但可以被实现(implements 关键字)或者继承(extends 关键字)。 (3)一个类可以实现多个接口。 (4)接口中定义的方法默认是 public 的,即使不显式声明。 (5)接口中定义的静态常量默认是 public static final 的。 实现接口 一个类通过 implements 关键字来实现接口,并必须实现接口中所有的抽象方法。 案例: [限时练习] 1. 以下关于Java封装的说法,错误的是( ) A. 封装可以隐藏对象的属性和实现细节 B. 封装可以提高代码的复用性 C. 封装可以通过构造方法为类的属性赋值 D. 封装只能通过private关键字实现 【答案】D 【解析】封装不仅仅是通过private关键字实现,还可以通过其他访问修饰符(如protected)来实现。封装的目的是为了保护对象的数据安全,提高代码的复用性和可维护性。 2. 以下关于Java继承的说法,正确的是( ) A. Java中一个类只能继承一个类 B. Java中一个类可以同时继承多个类 C. Java中一个类可以继承一个接口 D. Java中一个类可以同时实现多个接口 【答案】D 【解析】Java中不支持多继承,一个类只能继承一个类。但是,一个类可以实现多个接口。 3. 以下关于Java多态的说法,错误的是( ) A. 多态可以通过方法重载实现 B. 多态可以通过方法重写实现 C. 多态可以提高代码的扩展性 D. 多态可以让不同类型的对象对同一消息做出响应 【答案】A 【解析】多态通常是指子类对象可以赋值给父类引用变量,从而实现同一消息对不同类型的对象做出响应。方法重载是编译时多态,而方法重写是运行时多态。 4 以下关于Java抽象类的说法,正确的是( ) A. 抽象类不能包含具体实现的方法 B. 抽象类不能包含构造方法 C. 抽象类可以包含静态方法 D. 抽象类不能被实例化 【答案】D 【解析】 抽象类可以包含具体实现的方法、构造方法以及静态方法,但不能被实例化。 5. 以下关于Java接口的说法,错误的是( ) A. 接口中只能定义抽象方法 B. 接口可以包含成员变量,且默认为public static final C. Java 8+中,接口可以包含默认方法和静态方法 D. 一个类可以实现多个接口 【答案】A 【解析】Java 8+中,接口可以包含默认方法(default修饰)和静态方法(static修饰),不仅仅只能定义抽象方法。 6.在Java中,通过设置类的属性为private,可以实现数据的封装,防止外部直接访问这些属性。( ) 【答案】正确 【解析】封装的目的是为了保护对象的数据安全,通过将属性设置为private,可以防止外部直接访问,只能通过公共的getter和setter方法进行访问。 7.在Java中,子类继承父类时,子类会继承父类所有的属性和方法,包括私有的属性和方法。( ) 【答案】错误 【解析】子类可以继承父类的非私有属性和方法,但不能继承父类的私有属性和方法。 8.在Java中,多态性是指允许不同类的对象对同一消息做出响应。( ) 【答案】正确 【解析】多态性是面向对象编程的核心概念之一,它允许不同类的对象通过共同的接口或父类进行交互。 9.在Java中,抽象类不能有构造方法。( ) 【答案】错误 【解析】抽象类可以有构造方法,且构造方法在子类实例化时会先调用父类的构造方法。 10.在Java中,抽象类和接口都不能被实例化,但可以创建它们的引用变量,并指向具体子类的实例。( ) 【答案】正确 【解析】抽象类和接口本身不能被实例化,但可以声明它们的引用变量,并将具体子类的实例赋值给这些引用变量,实现多态。 11.编写一个Java类Employee,该类包含私有属性name(员工姓名)和salary(员工薪水)。提供公共的getter和setter方法,并在setter方法中添加对薪水的基本校验,确保薪水不能低于0。接着创建一个Manager类继承自Employee,并添加一个私有属性bonus(奖金)。 【答案】 12.创建一个Book类,包含成员变量title(书名)和author(作者)。实现一个构造方法用于初始化这些变量,并实现一个方法displayBookInfo()来显示书籍信息。重载构造方法,使得可以只通过书名创建Book对象。 【答案】 [归纳小结] 学科网(北京)股份有限公司 $$

资源预览图

专题三 面向对象程序设计(二)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)
1
专题三 面向对象程序设计(二)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)
2
专题三 面向对象程序设计(二)(讲义)-《计算机程序设计》(电工版第二版)高考备考讲练测(吉林省)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。