java抽象类和接口-cnblog

news2024/10/12 14:10:10

java抽象类和接口

image-20241012055931521

1 抽象类

在解决实际问题时,一般将父类作为抽象类,子类继承父类,并且实例化对象

在一个类中,只要有有一个方法是抽象的,类就是抽象的

抽象类被继承后需要实现所有的抽象方法,抽象类的关键词是abstract

2 接口

接口是抽象类的延伸,接口使用interface进行定义

3 实现接口

一个类继承一个父类的同时再实现一个接口

举一个实现例子

package nb;

interface Ren{  //绘制人的接口
    public void sing();
}


class Teacher { //制作一个人下的teacher类
    public void ZuoShi(){
        System.out.println("Teacher创建的方法");
    }
}

class Tchild extends Teacher implements Ren{
    @Override
    public void sing() {
        System.out.println("老师的孩子使用人类的唱歌方法接口");
    }
}
public class Jk {
    public static void main(String[] args) {
        Tchild tchild = new Tchild();
        tchild.sing();
        tchild.ZuoShi();
    }
}

image-20241011070459672

接口里的方法和类里的方法被同时实现了

4 接口继承接口

如果是接口制成接口,应该使用extend关键字,而不是implements关键字

写一个接口继承接口的案例

package nb;
interface Fatherin{
    void fatherMe();
}

interface Childin extends Fatherin{
    void childMe();
}
class InterTrue implements Childin{ //同时实现子接口和父接口
    @Override
    public void fatherMe() {
        System.out.println("实现父接口的方法");
    }

    @Override
    public void childMe() {
        System.out.println("实现子接口的方法");
    }
}
public class Kak {
    public static void main(String[] args) {
        InterTrue interTrue = new InterTrue();
        interTrue.childMe();
        interTrue.fatherMe();
    }
}

image-20241011072054931

如果类实现了子接口,在类中就要同时重写父接口和子接口的方法,不然会报错

image-20241011072117347

5 接口的多重继承

与类不能多重继承不同,接口可以实现多重继承的语法,子接口可以同时继承多个父接口

写一个案例

package nb;
interface A{
    void a();
}
interface B{
    void b();
}
interface C{
    void c();
}
interface D extends A,B,C{

}
class ConeTrue implements D{

    @Override
    public void a() {
        System.out.println("A接口中的a方法");
    }

    @Override
    public void b() {
        System.out.println("B接口中的b方法");
    }

    @Override
    public void c() {
        System.out.println("C接口中的c方法");
    }
}
public class DuoChong {
    public static void main(String[] args) {
        ConeTrue coneTrue = new ConeTrue();
        coneTrue.a();
        coneTrue.b();
        coneTrue.c();
    }
}

image-20241011072854152

6 接口的默认方法

java8新增了两个默认方法default方法和static方法并且允许这两个方法有方法体

default方法可以被子接口继承,也可以被他的实现类调用,default方法被继承时,可以被子接口重写方法

在一个java类实现了多个接口,这些接口在没有继承关系并且接口中包含相同的default方法,接口实现类会报错

接口实现类必须通过特殊语法,指定该实现类要实现哪个接口的dfault方法

接口.super.方法名(参数)

举例说明

package nb;

interface Def{
    default void deMt(){
        System.out.println("default方法");
    }
}
class AASS implements Def{
    @Override
    public void deMt(){
        Def.super.deMt();
    }
}
public class Deff {
    public static void main(String[] args) {
        AASS aass = new AASS();
        aass.deMt();
    }
}

image-20241011074617377

7 抽象类和接口的区别

抽象类和接口都有子类,其中可以把接口实现的子类称为实现类
抽象类通常用来作为子类的模版,接口通常用来描述子类的行为
子类虽然只能继承一个抽象类,但可以同时实现任意多个接口
创建抽象类需要使用abstract关键字,创建接口需要实现interface关键字
声明抽象类中的抽象方法需要使用abstract关键字,声明接口中的抽象方法可以省略abstract
在接口中可以使用default关键字定义有方法体的非抽象方法,但在抽象类中不能用
在接口中不能有构造方法,但是在抽象类中可以有
在抽象类中可以有代码块,静态代码块和静态方法,但在接口中不能有
抽象类中的成员属性可以定义为任意群贤,任意类型,静态和非静态的方法,但在接口中不能有
子接口可以同时继承多个父接口,但是子抽象类只能继承一个父抽象类

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

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

相关文章

entity,pojo,vo,dto 详解

在Java项目中,包名通常用于组织代码,使其更加清晰和易于维护。entity、pojo、vo和dto是常见的包名,它们各自有不同的含义和用途。下面将详细解释这些包名的含义,并提供一个示例,帮助你更好地理解它们在项目中的应用。 …

第二届 龙信杯 电子数据取证竞赛部分Writeup

大佬文章: 龙信杯复现(23、24) | BthclsBlog 手机部分 资料:2024年第二届龙信杯 WP_2024龙信杯wp-CSDN博客 1.分析手机检材,请问此手机共通过adb连接过几个设备?[标准格式:3] 2 /data/a…

基于Java SpringBoot和Vue校园新闻论坛管理系统设计

摘要 本系统采用Java Spring Boot作为后端框架,前端使用Vue.js构建用户界面,旨在为校园新闻论坛提供一个高效、易用且功能全面的管理平台。通过整合SpringBoot的快速开发优势与Vue的响应式设计,实现了一个包含用户注册登录、新闻发布审核、评…

Rust编程的泛型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 7.6.1 什么是泛型编程 C/C、Rust都是强类型语言,在对数据进行处理时&a…

详解前端开发都需要掌握的十个 JavaScript 基本数组函数

假设你正在开发一个复杂的 Web 项目。你的数据来自许多 API,你的工作是高效地处理、过滤和分析这些数据。你的时间很紧张,所以每一行代码都很重要。 这时学习高级 JavaScript 数组方法就会对你有所帮助。 这些函数不仅可以减少代码量,还可以…

C语言—双链表

一、双向链表的结构 注意:这⾥的“带头”跟前⾯我们说的“头节点”是两个概念,实际前⾯在单链表阶段称呼不严谨,带头链表⾥的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这⾥“放哨的”…

desmos和webgl绘制线条

目录 desmos绘制 webgl绘制 将线段坐标生成三角化坐标 处理斜接线段 处理圆角 尖角 先在desmos上面完成线条lineJoin绘制的,再将代码和公式转到js用webgl绘制. desmos绘制 示例 desmos计角斜接角时,需要用到的一些函数。在desmos定义成公共函数&#xff0c…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod心理健康辅导平台

基于Spring Boot实现的原生Android心理健康辅导平台,其背景可以从以下几个方面进行详细阐述: 一、技术背景 Spring Boot框架:Spring Boot是Spring框架的一个子集,它通过自动配置、简化依赖管理、内嵌容器等特性,极大…

登录前端笔记(一):pinia管理用户数据

一、把pinia加入到项目文件里 ①、npm install pinia ②mian.ts //①导入createPinia import { createPinia } from pinia //②执行方法得到实例 const pinia createPinia() //③把pinia实例加入到APP应用里 app.use(pinia)二、官网简单实例(定义store【state与ac…

Stylized Far East 古代国风建筑城镇宫殿场景模型

古代国风建筑城镇宫殿场景模型。内容: -演示场景(截图) - 种类繁多的建筑,如宫殿、商店、神社、房屋、餐馆、宝塔、寺庙等 -带有塔楼、门楼的模块化城堡墙 -树木、岩石、悬崖和其他自然资产 -传统装饰,如纸灯笼、绘画、瓷器等 - 城镇道具,如手推车、栅栏、板条箱、市场、…

Redis-缓存一致性

缓存双写一致性 更新策略探讨 面试题 缓存设计要求 缓存分类: 只读缓存:(脚本批量写入,canal 等)读写缓存 同步直写:vip数据等即时数据异步缓写:允许延时(仓库,物流&a…

el-carousel-item自动重复渲染,使用nanoid让重复的元素包含不同的id

<template><div class"page-container"><div class"m-title">轮播图</div><el-carousel height"400px" :autoplay"true"><el-carousel-item v-for"(item, index) in carouselList" :key&…

AOT漫谈专题(第二篇): 如何对C# AOT轻量级APM监控

一&#xff1a;背景 1. 讲故事 上一篇我们聊到了如何调试.NET Native AOT 程序&#xff0c;这是研究一个未知领域知识的入口&#xff0c;这篇我们再来看下如何对 Native AOT 程序进行轻量级的APM监控&#xff0c;当然这里的轻量级更多的是对 AOT 中的coreclr内容的挖掘。 二…

面试官最喜欢问的28道ZooKeeper面试题

前言 ZooKeeper 是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。 ZooKeeper 的目标就是封装好复杂易出错的关键服务&#xff0c;…

再也不怕面试官问我几百亿ip相关的问题了

首先要明确这一类的问题都是海量那个数据类型的问题&#xff0c;对于海量数据我们一般采用分而治之的思路去解决&#xff0c;考官考察的就是你有没有处理海量数据的经验。总结几个常见的海量数据相关的面试&#xff0c;供参考。 有一个存放10GB的ip地址文件&#xff0c;每行一…

2024年【安全生产监管人员】免费试题及安全生产监管人员模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年安全生产监管人员免费试题为正在备考安全生产监管人员操作证的学员准备的理论考试专题&#xff0c;每个月更新的安全生产监管人员模拟试题祝您顺利通过安全生产监管人员考试。 1、【单选题】()以上地方人民政府…

基于SSM的民宿预订系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 一、毕业设计&#xff08;论文&#xff09;选题的目的和意义 由于现代人经济水平的不断提高&#xff0c;出门旅游已经成为人们放松和休息的一种生活方式。而出门在外&#xff0c;住宿也是首要问题&#xff0c;相比于传统的酒店…

五子棋项目自动化测试

目录 一、五子棋项目介绍 二、编写Web测试用例 三、自动化测试脚本开发 1、引入依赖 2、设计框架 3、Utils 4、LoginPage 5、RegisterPage 6、MatchPage 7、RunTest类 8、运行程序 一、五子棋项目介绍 五子棋项目是基于 WebSocket 实现的多人在线对战系统&#xff0…

【优选算法】(第三十六篇)

目录 ⼆叉树的锯⻮形层序遍历&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⼆叉树的最⼤宽度&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⼆叉树的锯⻮形层序遍历&#xff08;medium&#xff09; 题目解析 1.题目链接&#xf…

【高中生讲机器学习】21. 隐马尔可夫模型好难?看过来!(下篇)

创建时间&#xff1a;2024-10-09 首发时间&#xff1a;2024-10-12 最后编辑时间&#xff1a;2024-10-12 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名高一学生&#xff0c;热爱计…