Java面向对象.抽象

news2024/11/30 20:45:50

目录

1.object类

一、Object类的地位

所有类的父类

2.抽象类

一、定义与声明

抽象类的概念

 二、抽象方法

抽象方法的特点

三、继承抽象类

子类的责任

3.抽象方法基础理念

1.抽象方法的特征

2.将abstaract加在方法的前面,该类无法被继承

1.首先,我们要理解什么是抽象方法!

2.抽象方法的重要知识点

4.final关键字

final关键字可以应用于类、方法和变量

final类:声明为final的类是无法被继承的,即该类不能有子类。final类常常用于不希望被修改或继承的情况,例如String类就是一个final类。

2.final方法:声明为final的方法不能被子类重写或覆盖,即该方法的实现是最终的。final方法常常用于不希望子类改变父类的行为的情况。

3.final变量:声明为final的变量是一个常量,即其值一旦被初始化后就无法再被修改。final变量必须在声明时或构造方法中进行初始化,而且不能多次赋值。


1.object类

一、Object类的地位


所有类的父类


在Java中,Object类是所有类的根类。这意味着,任何一个类,如果没有明确地继承其他类,那么它默认继承Object类。例如,我们创建一个简单的类:

 
class MyClass {
    // 这里没有显示继承其他类,但它实际上继承了Object类
}


- 这种继承关系是Java语言的基本特性,它建立了Java类层次结构的基础。


2.抽象类

一、定义与声明


抽象类的概念


抽象类是一种不能被实例化的类,它主要用于被其他类继承。在Java中,使用 abstract 关键字来定义抽象类。
 

abstract class Shape {
    // 抽象类的成员变量、方法等
}


 
- 抽象类通常包含抽象方法和非抽象方法以及成员变量。


 
二、抽象方法


抽象方法的特点


抽象方法是没有方法体的方法声明,它以 abstract 关键字开头,并且必须在抽象类中
 

abstract class Animal {
    abstract void makeSound();
}
 


 
- 抽象方法的存在是抽象类的一个重要特征,它强制子类去实现这些方法,提供了一种定义规范的方式。
 


三、继承抽象类


子类的责任


当一个类继承抽象类时,子类必须实现抽象类中的所有抽象方法(除非子类也是抽象类) 。
 

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("汪汪汪");
    }
}


 
- 这种继承关系确保了在多态场景下,抽象类可以作为一种通用的类型,而子类则提供具体的实现。
 

3.抽象方法基础理念

1.抽象方法的特征

1.抽象方法没有方法体;

2.抽象方法必须位于抽象类中;

3.抽象方法必须在子类中被实现,除非子类是抽象类

2.将abstaract加在方法的前面,该类无法被继承

public abstract void print();
//没有方法体

1.首先,我们要理解什么是抽象方法!

1.抽象方法的基本理念是将方法的声明与方法的具体实现分离,通过定义抽象方法来描述类应该具有的行为或功能。这样可以实现封装接口、提高代码的扩展性、实现多态性和强制子类实现

2.抽象方法的基本理念是将方法的声明与方法的具体实现分离开来,通过定义抽象方法来描述一个类应该具有的行为或功能,而具体的实现将留给子类来完成。

2.抽象方法的重要知识点

1. 抽象方法是在抽象类或者接口中声明的方法,不包含方法体,只有方法的声明。
2. 抽象方法用于定义一种行为或者功能,但是具体的实现是由子类来完成。
3. 抽象方法必须被子类实现或者覆盖,否则子类也必须声明为抽象类。
4. 抽象方法不能被实例化,也就是不能直接创建对象。
5. 抽象方法必须被声明在抽象类或者接口中,所以抽象类或者接口也必须是抽象的。
6. 如果一个类继承了抽象类或者实现了接口,那么它必须实现抽象类或者接口中的所有抽象方法,否则该类也必须声明为抽象类。
7. 抽象方法可以有参数和返回值,就像普通的方法一样。
8. 抽象类可以包含非抽象方法,子类可以直接继承和使用这些非抽象方法,不需要重写。
 

4.final关键字

final关键字可以应用于类、方法和变量

  1. final类:声明为final的类是无法被继承的,即该类不能有子类。final类常常用于不希望被修改或继承的情况,例如String类就是一个final类。
public final class Penguin extends Pet{
//......
}
2.final方法:声明为final的方法不能被子类重写或覆盖,即该方法的实现是最终的。final方法常常用于不希望子类改变父类的行为的情况。
public final void print(){
//......
}
3.final变量:声明为final的变量是一个常量,即其值一旦被初始化后就无法再被修改。final变量必须在声明时或构造方法中进行初始化,而且不能多次赋值。
public class Penguin{
  final String home="长沙";
  public void setHome(String name){
    this.home.home;//错误,home不能再进行赋值
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA如何快速地重写方法,如equals、toString等

前言 大家好,我是小徐啊。我们在使用IDEA的时候,有时候是需要重写equals和toString等方法的。这在IDEA中已经很方便的给我们准备好了快速的操作了。今天就来讲解一下。 如何重写 首先,打开要重写方法的文件,让鼠标定位到这个文…

跨境物流市场风云变幻,集运企业需精准决策以应对挑战

跨境物流市场,作为全球经济的重要纽带,正经历着前所未有的风云变幻。据最新数据显示,全球海运贸易在2023年实现了2.4%的增长,并预计在今年年底前将再增长2%。这一增长态势虽然积极,但背后却隐藏着诸多挑战与不确定性。…

2024年首届数证杯 初赛wp

“数证杯”电子数据取证分析大赛致力于成为全国第一大电子数据取证分析大赛,面向所有网络安全从业人员公开征集参赛选手。参赛选手根据所属行业报名参赛赛道,比赛设置冠军、亚军、季军奖。所涉及行业包括能源、金融、通信、取证、安全等企业以及各类司法…

电机瞬态分析基础(3):空间矢量

1. 空间矢量 空间矢量的概念在交流电机分析与控制中具有非常重要的作用。将各相的电压、电流、磁链等电磁量用空间矢量表达,可以使三相感应电机的动态方程表达更简洁,为电机的分析与控制带来方便,并有助于对交流电机的矢量控制、直接转矩控制…

C/C++绘制爱心

系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C/…

LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率

参考: https://zhuanlan.zhihu.com/p/719510286 1、query重写 你是一名AI助手,负责在RAG(知识库)系统中通过重构用户查询来提高检索效果。根据原始查询,将其重写得更具体、详细,以便更有可能检索到相关信…

MTK主板_小型联发科安卓主板_行业智能终端主板基于联发科方案

MTK安卓主板是一款小巧而高效的科技产品,其尺寸仅为43.4mm x 57.6mm。采用了先进的联发科12nm制程工艺,这款主板搭载四核或八核64位A53架构的CPU,主频高达2.0GHz,不但保证了出色的计算能力,还实现了超低功耗的特点。系…

递归---汉诺塔

问题描述 有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动,同一根柱子上都不能出现大盘子在小盘子上方,输出每次的移动。…

HTML飞舞的爱心(完整代码)

写在前面 HTML语言实现飞舞的爱心完整代码。 完整代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>飞舞爱心</title><style>* {margin: 0;padding: 0;}html,body {overflow: hidd…

修改训练策略,无损提升性能

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月29日15点40分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

@bytemd/vue掘金markdown插件预览内容有误

vue项目使用bytemd/vue 来预览字符串格式的markdown内容&#xff0c;总会多出如图的一段代码&#xff0c; 请问有没有大佬知道为什么&#xff1f; 很急&#xff0c;求教&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 项目介绍 2.0 用户登录功能 3.0 用户管理功能 4.0 影院管理功能 5.0 电影管理功能 6.0 影厅管理功能 7.0 电影排片管理功能 8.0 用户评论管理功能 9.0 用户购票功…

window.structuredClone 深拷贝

概述&#xff1a; structuredClone 是一种新的 JavaScript 原生方法&#xff0c;用于创建一个对象的深拷贝。与传统的浅拷贝方法&#xff08;如 Object.assign 或数组的 slice&#xff09;不同&#xff0c;structuredClone 可以递归地拷贝对象&#xff0c;包括其中的嵌套对象、…

java全栈day10--后端Web基础(基础知识)

引言&#xff1a;只要能通过浏览器访问的网站全是B/S架构&#xff0c;其中最常用的服务器就是Tomcat 在浏览器与服务器交互的时候采用的协议是HTTP协议 一、Tomcat服务器 1.1介绍 官网地址&#xff1a;Apache Tomcat - Welcome! 1.2基本使用(网上有安装教程&#xff0c;建议…

java:拆箱和装箱,缓存池概念简单介绍

1.基本数据类型及其包装类&#xff1a; 举例子&#xff1a; Integer i 10; //装箱int n i; //拆箱 概念&#xff1a; 装箱就是自动将基本数据类型转换为包装器类型&#xff1b; 拆箱就是自动将包装器类型转换为基本数据类型&#xff1b; public class Main {public s…

保持角色一致性!flux新模型redux用法(含模型与工作流)

​ 目录 redux模型是什么&#xff0c;能干啥&#xff1f; 用到的工具有哪些&#xff1f; 工具和模型文件在哪里下载&#xff1f; 整合包&#xff1a; 下载后需要分别放到指定目录&#xff1a; redux模型怎么用&#xff1f; 加载工作流 上传图片和输入提示词 生成结果…

通信原理实验:抽样定理实验

目录 一、实验目的和要求 二、实验内容和原理 实验器材 实验原理 三、实验步骤 (一)实验项目一:抽样信号观测及抽样定理验证 四、实验记录与处理 结论: 辅助学习资料: 五、实验结果及分析 一、实验目的和要求 了解抽样定理在通信系统中的重要性。掌握自然抽样及…

HarmonyOS NEXT应用开发,关于useNormalizedOHMUrl选项的坑

起因是这样的&#xff1a;我这库打包发布出问题了&#xff0c;这个有遇到的吗&#xff1f; 源码里面就没有 request .d.ts,这打包后哪来个这文件&#xff1f;且漏掉了其他文件。 猫哥csdn.yyz_1987 为啥我打包的har里面&#xff0c;只有接口&#xff0c;没有具体实现呢&#x…

Ubuntu Server 22.04.5 从零到一:详尽安装部署指南

文章目录 Ubuntu Server 22.04.5 从零到一&#xff1a;详尽安装部署指南一、部署环境二、安装系统2.1 安装2.1.1 选择安装方式2.1.2 选择语言2.1.3 选择不更新2.1.4 选择键盘标准2.1.5 选择安装版本2.1.6 设置网卡2.1.7 配置代理2.1.8 设置镜像源2.1.9 选择装系统的硬盘2.1.10 …

学成在线day07

视频处理 技术方案 掌握了xxl-job的分片广播调度方式&#xff0c;下边思考如何分布式去执行学成在线平台中的视频处理任务。 任务添加成功后&#xff0c;对于要处理的任务会添加到待处理任务表中&#xff0c;现在启动多个执行器实例去查询这些待处理任务&#xff0c;此时如何…