alpha第五章 多态

embedded/2024/12/26 13:28:04/

1.instanceof Cat

2.Cat

final 修饰符在 Java 中是用来表示不可修改或不可继承的意思。我们来逐一分析 final 修饰符在不同情况下的使用:

  1. final 可以修饰类,表示该类不能被继承。

    • 例如:final class MyClass { }
    • 这种情况下,MyClass 不能作为父类,不能有子类。
  2. 接口final 不能修饰接口。

    • 这意味着我们不能声明一个 final 接口。接口本身就是为了被实现的,不能被标记为 final,因为如果接口被标记为 final,就无法继承它或实现它。
  3. 方法final 可以修饰方法,表示该方法不能被子类重写。

    • 例如:public final void myMethod() { }
    • 这种情况下,子类无法重写 myMethod() 方法。
  4. 变量final 可以修饰变量,表示该变量一旦初始化后不能再修改其值。

    • 例如:final int x = 10;
    • 这表示 x 的值不可更改。

结论:

final 不能修饰接口。

重要

  1. 抽象类不一定含有抽象方法,接口中的方法都是抽象方法

    • 正确。抽象类可以包含抽象方法,也可以包含具体方法(即有方法体)。接口中的方法默认都是抽象方法,除非方法被标记为 default 或 static,这些方法才可以有方法体。
  2. 一个类只能继承一个抽象类,但可以实现多个接口;一个接口可以继承多个接口

    • 正确。Java中,类只能继承一个抽象类(因为Java不支持多重继承),但可以实现多个接口。接口支持多重继承,一个接口可以继承多个接口。
  3. 抽象类和接口中的方法都没有方法体

    • 错误。抽象类中的方法可以没有方法体,也可以有方法体(具体方法)。接口中的方法通常没有方法体,但从Java 8开始,接口可以包含有方法体的 default 方法和 static 方法。
  4. 抽象类可以含有私有成员变量,接口不含有私有成员变量

    • 正确
    • 抽象类:可以有私有成员变量,并且可以通过提供公共方法来操作这些变量。
    • 接口:不能有任何成员变量(除了常量),只能声明方法,且这些方法默认是抽象的。

类实现接口

填空题

一个类如果实现一个接口,那么它需要实现接口中定义的全部(抽象方法),否则该类就被定义为(抽象类)。

接口声明的关键字是______。

填空题

接口声明的关键字(interface)

如果一个类引用了某个接口,就必须在类体中重写接口中定义的所有______。

填空题

如果一个类引用了某个接口,就必须在类体中重写接口中定义的所有(抽象方法)。

抽象方法只要包含抽象方法就可以

可以实现多接口,但不可以实现多继承

implement 接口

extends 父类(抽象)

  1. abstract类中不应该有private的成员

    • 错误。抽象类中是可以有 private 成员的。抽象类的目的是为了提供一个可以被继承的基础类,它的成员可以是 privateprotected 或 public,这取决于具体的设计需求。private 成员在抽象类中是允许的,但它只能被该类的其他成员方法访问。
  2. static方法中能直接调用类里的非static的属性

    • 错误static 方法属于类本身,而不是类的实例,因此它不能直接访问非 static 成员(即实例变量或实例方法)。static 方法只能访问类的 static 成员。如果需要在 static 方法中访问非 static 属性,必须先创建类的实例。
      java">class MyClass {int nonStaticVar = 10;  // 非static属性static int staticVar = 20;  // static属性static void staticMethod() {System.out.println(staticVar);  // 可以访问static属性// System.out.println(nonStaticVar);  // 编译错误,不能直接访问非static属性}
      }


http://www.ppmy.cn/embedded/148904.html

相关文章

前端工程化是什么?

‌前端工程化‌是指将前端开发的流程、工具和规范化进行系统化和自动化,以提高开发效率、代码质量和项目的可维护性。它涉及多个关键方面,包括模块化、打包构建、自动化测试、代码规范和持续集成/持续交付(CI/CD)等‌。 前端工程…

Intellij配置scala运行环境

文章目录 Intellij配置scala运行环境下载地址安装插件设置sdk与scala scala项目创建安装可能出现的错误 Intellij配置scala运行环境 下载地址 在centos7上安装intellij https://www.jetbrains.com/idea/download/other.html解压后进入文件夹启动打开ide ./idea-IC-232.1033…

ELK系列-(六)Redis也能作为消息队列?(下)

一、前文回顾 🔍 在前面的ELK系列中,我们已经搭建了ELK的核心组件,包括: ELK系列-(一)Docker部署ELK核心组件ELK系列-(二)LogStash数据处理的瑞士军刀ELK系列-(三&…

helm函数

默认函数介绍 在 Helm 中,default 函数用于为变量提供默认值,以确保模板渲染不会因为变量未定义或为空值而失败。基本语法如下: {{ default "默认值" .变量 }} 或者: {{ .Valumes.XX | default "latest" }}…

aws(学习笔记第十九课) 使用ECS和Fargate进行容器开发

aws(学习笔记第十九课) 使用ECS和Fargate进行容器开发 学习内容: 使用本地EC2中部署docker应用使用ECS的EC2模式进行容器开发使用ECS的Fargate模式进行容器开发 1. 使用本地EC2中部署docker应用 docker整体 这里展示了docker的整体流程。 开发阶段 编写dockerfile…

比 SaaS 更具性价比,火山引擎云数仓 ByteHouse 上新“云托管”模式

本地部署、SaaS 部署、私有化部署.....都是常见的软件部署方式。企业往往从安全、成本、易用性等多角度综合选择部署方式。SaaS 往往被认为初始成本更低、具备更强扩展性,但由于数据存储在软件供应商的服务器上,一些对数据安全和隐私要求高的企业会对此存…

HarmonyOS NEXT 实战之元服务:静态案例效果--- 手机一键加速、手机垃圾清理

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …

java高频面试之SE-05

面试官:java中为什么有多态? 面试官你好!Java 中有多态主要是为了实现灵活性和可扩展性。通过多态,可以用统一的接口处理不同的对象,从而提高代码的可维护性和可复用性。以下是多态的几个关键原因: 1. 代…