关于Java中的抽象类注意事项

news2024/11/22 14:43:43

文章目录

  • 🏆文章导读
  • 🍂抽象类的定义
  • 🍂抽象类的特性
  • 🍂总结:
  • 面试题
    • 普通类和抽象类有哪些区别?
    • 抽象类能使用final继承吗?

🏆文章导读

在本篇文章中,对抽象类进行了一个详细的解读,讲解了什么是抽象类,什么是抽象方法,抽象类的关键字,以及抽象类的注意事项;干货满满!!!希望读者能够详细的阅读,如果有不足的地方,还望读者能够指出,您的意见就是我最大的进步

🍂抽象类的定义

抽象类概念:如果一个类中没有包含足够的信息来描绘具体的对象,那这样的类就称为抽象类;

就比如以下代码:

在java中,一个类如果被abstract修饰则称为抽象类,抽象类中被abstract修饰的方法称为**抽象方法,**如果在一个方法中,不想有一个具体的实现,那么这个方法就可以定义成抽象方法,就像eat方法,它只表述了动物吃饭这个行为,并没有具体的说明什么动物吃什么。

然而,在抽象类中,也可以有普通的成员变量和成员方法

//抽象类,被abstract修饰
public abstract class Animal {
    //抽象类中也可以有普通成员变量
    int a = 10;
   /* public void eat() {
        System.out.println("动物吃饭");
    }*/
    //因为在子类中又重写了这个方法,所以方法里面的语句写不写都无所谓
    public abstract void eat();
    //抽象类中也可以有普通成员方法
    public void sleep() {
        
    }
    
}
//子类
public class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("小狗吃狗粮");
    }
}
//子类
public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("小猫吃猫粮");
    }
}

public class TestAnimal {
    public static void method(Animal animal) {
        animal.eat();
    }
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        method(dog);
        method(cat);
    }
}

🍂抽象类的特性

1、抽象类是不能被实例化的

在上面的TestAnimal类中实例化一个抽象类对象是错误的!,但是,如果抽象类不能被实例化,那抽象类又有什么作用呢?答案是:抽象类是用来被继承的;

在这里插入图片描述

虽然抽象类不能被实例化,但是抽象类可以被继承,可以发生向上转型,所以就能发生动态绑定,所以就可以实现多态!!!

在这里插入图片描述

2、普通类继承抽象类后,必须在普通类中重写抽象类中的抽象方法,而对于抽象类中的普通方法,重不重写都无所谓;

//抽象类
public abstract class Animal {
    public abstract void eat();
}

public class Dog extends Animal{
	/*@Override
    public void eat() {
        System.out.println("小狗吃狗粮");
    }*/
}

在这里插入图片描述

3、抽象方法不能被private修饰,因为被private修饰的方法不能被继承,而抽象方法一定要被重写

在这里插入图片描述

4、抽象方法不能被final和static修饰,因为抽象方法一定要被子类重写,而final修饰的方法则不能重写

在这里插入图片描述

5、抽象类中可以有构造方法,其作用是在利用子类初始化父类成员变量

在这里插入图片描述

🍂总结:

1、被abstract修饰的类称为抽象类

2、被abstract修饰的方法称为抽象方法

3、抽象类当中可以有普通的成员方法和成员变量

4、抽象类不能被实例化

5、抽象方法不能被final和static以及private修饰

6、抽象类中可以有构造方法,其作用是利用子类构造方法帮助父类初始化成员变量

7、抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类

8、抽象类中的抽象方法必须被重写

面试题

普通类和抽象类有哪些区别?

1、普通类不能包括抽象方法,抽象类可以包含抽象方法,普通方法。

2、抽象类不能直接实例化,必须被继承,普通类可以直接实例化

抽象类能使用final继承吗?

不能,定义抽象类就是被其他类继承的,如果用final修饰的话,该类就不能被继承了,这样彼此就会产生矛盾,所以final不能修饰抽象类!

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

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

相关文章

c++学习——c与c++const修饰的变量的区别

c语言下const修饰的变量 1、c语言下const修饰的变量都有空间 2. c语言的const修饰的全局变量具有外部链接属性 07 const修饰的变量.c #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h>const int a 10;//常…

1. Linux环境搭建及问题解决方案

本文介绍了Linux环境搭建的过程以及遇到的问题和解决方案&#xff0c;并且介绍了常用的Linux命令. 一、Linux环境搭建 整体所需的环节 安装VMware安装Linux &#xff08;这边我选的是Server版本&#xff09;安装配置Samba&#xff08;Samba是一种Linux和Windows之间进行文件共…

二层环路详解:交换机环路产生的过程和原因

前言&#xff1a; 在了解环路之前得先了解交换机的工作原理&#xff0c;当然交换机的基本工作原理其实非常简单&#xff0c;只有“单播转发与泛洪转发”、“交换机MAC地址表”这两个&#xff01;其他的如vlan&#xff0c;生成树等也是在此基础上增加的&#xff0c;弥补交换机基…

初始Linux的基本操作

上篇博客中&#xff0c;我介绍了关于Linux的相关概念&#xff0c;让我们初步的了解到Linux的重要性&#xff0c;在这篇博客中我会再讲一些Linux操作系统的理解。 一.操作系统 我们知道Linux是一个操作系统&#xff0c;而操作系统操作系统(英语&#xff1a;Operating System&…

[深度好文]10张图带你轻松理解关系型数据库系统的工作原理

[深度好文]10张图带你轻松理解关系型数据库系统的工作原理 原文(欢迎关注)&#xff1a;https://mp.weixin.qq.com/s/CNCfWRpv8QlICGvZkLG4Jw 尽管数据库在我们应用程序中扮演着储存几乎所有状态的关键角色&#xff0c;但人们对其运行原理的了解通常仅停留在较为浅显的层面&…

跟我一起使用 compose 做一个跨平台的黑白棋游戏(4)移植到compose-jb实现跨平台

前言 在上一篇文章中&#xff0c;我们已经实现了游戏的所有界面和逻辑代码&#xff0c;并且在 Android 上已经可以正常运行。 这篇文章我们将讲解如何将其从使用 jetpack compose 修改为使用 compose-jb 从而实现跨平台。 老规矩&#xff0c;先看效果图&#xff1a; 可以看到…

063:cesium设置带边界线材质(material-7)

第063个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置带边界折线材质,请参考源代码,了解PolylineOutlineMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)相关API参考…

Python-matplotlib中的pie(饼)图

Python-matplotlib中的pie&#xff08;饼&#xff09;图 %matplotlib inline import matplotlib.pyplot as pltm 51212 f 40742 m_perc m/(mf) f_perc f/(mf)colors [navy,lightcoral] labels ["Male","Female"]plt.figure(figsize(8,8)) paches,te…

为什么不胜任的人,反而获得晋升?

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 也许你有过这样的经历&#xff0c;自己勤勤恳恳地干活&#xff0c;每个月却只拿着微薄的薪水&#xff0c;有些人明明无法胜任工作&#xff0c;却像坐了火箭一样飞速晋升。这种现象在现实生活中无处不在…

3699元还配同价位最好屏幕!Redmi Book 14评测:几乎完美的“水桶”轻薄本

一、前言&#xff1a;4K价位最好屏幕 不久前&#xff0c;有网友让我推荐一台4000元价位的轻薄本&#xff0c;笔者直接选了一台搭载i5-13500H处理器且价格仅售4299元的某一线品牌产品。 但是&#xff0c;事后才发现不对&#xff0c;因为这款极具性价比的笔记本竟然用了45%NTSC色…

MIT6.824 lecture5上课笔记(涉及到Lab2A)- Go threads and raft

总结&#xff1a;本节课讲解了一些会在lab2中使用到的go的多线程技巧&#xff0c;会给一些简单的demo&#xff0c;lab2中可能会借鉴这些demo。 详细的Lab2 raft算法实现源码&#xff0c;请参考我的个人仓库&#xff08;记得点颗星星&#xff09;, 配合readme食用更佳。 MIT6.…

ChatGPT 使用 拓展资料:如何善用大语言模型的推理能力?

ChatGPT 使用 拓展资料:如何善用大语言模型的推理能力?

ChatGPT Plus 会员续费扣款失败如何处理

扣款失败 笔者由于开通 ChatGPT Plus 会员比较早&#xff0c;3月26日一个月就到期了&#xff0c;但是最近几天注意到&#xff0c;虚拟卡上也没有提醒我扣费&#xff0c;还是能继续使用 GPT-4.0&#xff0c;就很奇怪&#xff0c;于是就研究了一番。 PS: 如果有小伙伴还不会开通 …

python 文件操作 , 异常处理 , 模块和包

文件操作 1.写数据 # open(name, mode) # name&#xff1a;是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 # mode&#xff1a;设置打开文件的模式(访问模式)&#xff1a;只读、写入、追加等。 #1.打开文件---通道建立--申请资源 # w 模式会清空之前的内…

【三维激光扫描】实验04:SiScan基于点云的量测功能

SiScan软件提供的基于点云的量测功能有:两点距离量测、多点距离量测、点到面距离量测、高度量测、坡度量测、角度量测、投影面积量测等等。 文章目录 一、两点距离量测二、多点距离量测三、点到面距离量测四、高度量测五、坡度量测六、角度量测七、投影面积量测一、两点距离量…

分布式与并行计算—并向算法实现

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 原始串行快速排序算法中有“分而治之”的递归调用部分&#xff0c;在每次选择pivoit并把序列按照小于pivoIt和大于pivoit分成两类后&#xff0c;左右两部分的递归排序可以并发执行。 运行时间 为了减小偶然性因素造成的时间差…

postgresql|数据库|插件学习(一)---postgresql-12的内置插件pg_stat_statements的启用和使用

前言&#xff1a; 插件就是原软件的扩展功能。postgresql有非常多的各种各样的插件&#xff0c;当然了&#xff0c;插件不安装对于我们使用数据库并没有什么太多的影响&#xff0c;可能只是不舒服一些而已&#xff0c;但有一些插件我们如果有安装&#xff0c;那么&#xff0c;对…

【NMI 2021】从生物学角度看进化计算(6个生物进化特征)

A biological perspective on evolutionary computation “生物学视角下的进化计算”&#xff0c;总结了进化算法——通过对比模拟和真实的进化&#xff0c;指出当前进化算法与生物进化存在的六点差异&#xff0c;并指出了对应的改进方案。 何为进化算法&#xff1f; 将任意问…

第二部分——长难句——第二章——复合句——第二节——状语从句

最后一类了哦 一&#xff0c;状语从句的概述 &#xff08;一&#xff09;状语从句的含义 一个句子作状语表达描述性的信息 一个主句可以组合好几个状语从句&#xff0c;因为可以表述不同方面的信息。 &#xff08;二&#xff09;状语从句的写法 状语从句的连接词叫做从属连…