Java面向对象.抽象

ops/2024/11/30 12:11:05/

目录

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类。例如,我们创建一个简单的类:

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


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


2.抽象类

一、定义与声明


抽象类的概念


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

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


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


 
二、抽象方法


抽象方法的特点


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

java">abstract class Animal {abstract void makeSound();
}


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


三、继承抽象类


子类的责任


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

java">class Dog extends Animal {@Overridevoid makeSound() {System.out.println("汪汪汪");}
}


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

3.抽象方法基础理念

1.抽象方法的特征

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

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

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

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

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


http://www.ppmy.cn/ops/137920.html

相关文章

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

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

剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍

一、三种批量替换模式的区别 二、混剪裂变替换素材 三、分区混剪裂变替换素材 四、按组精确替换素材 五、绿色按钮教程 (一)如何附加音频和srt字幕 (二)如何替换固定文本的内容和样式 (三)如何附加…

leetcode:637二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的平均值为 …

worth:价值的秘密

价值,或表示价值,英文中有两个单词:value和worth: value是值的意思,相对来说,更为具体或标准化一点,也有更偏经济性一点;而worth则或更偏向“意义”这一含义,更哲学化&a…

redis中的bigkey及读取优化

一、bigKey介绍 1、简介 在 Redis 中,Big Key(大键)指的是占用大量内存的单个键。通常,Redis 是一个高性能的内存数据库,但是当某些键变得非常大时,会带来性能上的影响。例如,大量的内存消耗、长时间的操作延迟,甚至可能导致 Redis 停止响应或崩溃。 通俗的来说,指…

解决 YOLOv5 加载模型时 ‘AttributeError Can‘t get attribute ‘SPPF‘‘ 错误的方法

解决 YOLOv5 加载模型时 ‘AttributeError: Can’t get attribute ‘SPPF’’ 错误的方法 此 AttributeError: Cant get attribute SPPF 错误通常出现在尝试加载预训练的 YOLOv5 模型时,该模型的代码库与预训练模型的版本不一致。这种不匹配导致序列化模型中期望的…

Table 滚动条始终停靠在可视区域的底部

1. 话题引入 存在这样一个场景:当页面尺寸发生变化时,希望滚动条能够随之动态调整,始终展示在 table 的可视区域的最下方,而不是整个 table 本身的最底部。 这种行为可以提升用户的使用体验,尤其是在处理大数据表格时…

MacOS 配置github密钥

MacOS 配置github密钥 1. 生成GitHub的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxx.com" -f ~/.ssh/id_ed25519_github 其中 xxxxxxxxxxx.com 是注册github、gitee和gitlab的绑定账号的邮箱 -t ed25519:生成密钥的算法为ed25519(ed25519比rsa速度快&…