• Java类实现某个接口后,是否需要实现接口中的所有方法?


    【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

    博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

    吾等采石之人,应怀大教堂之心,愿我们奔赴在各自的热爱里…

    一、业务场景

    📣 问题描述:Java类实现某个接口后,是否需要实现接口中的所有方法?

    📖 答 : 如果是普通的类,必须去实现接口里所有的方法,如果是抽象类,则可以不去实现。

    在这里插入图片描述

    首先定义一个卖火车票的接口:定义两个方法

    在这里插入图片描述
    创造一个类来实现买票接口,先实现一个方法,很明显idea给出提示爆红

    Class 'TrainStation' must either be declared abstract or implement abstract method 'pay()' in 'SellTickets'

    在这里插入图片描述
    继续实现第二个方法后发现idea去除爆红

    在这里插入图片描述
    我们发现如果该类是抽象类不实现对应方法也不会爆红
    在这里插入图片描述
    如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!

    📝 相关代码感兴趣实践运行

    public interface SellTickets {
    
        void sell();
    
        void pay();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    /**
     * @version v1.0
     * @ClassName: TrainStation
     * @Description: 火车站类
     * @Author:
     */
    public class TrainStation implements SellTickets {
    
        public void sell() {
            System.out.println("火车站卖票");
        }
    
        @Override
        public void pay() {
             System.out.println("实现pay方法");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    二、抽象类学习

    📖 Java中抽象类就是使用abstract关键字修饰的一种特殊的类,抽象类可以不去实现接口的抽象方法,可以由继承这个抽象类的子类去实现。

    抽象类:包含抽象方法的类。如果一个类包含抽象方法,那么该类必须是抽象类,使用 abstract 关键字修饰

    public abstract class 类名 {
        //抽象类中可以包含变量、常量,抽象方法,非抽象方法
    }
    
    • 1
    • 2
    • 3

    案例学习

    public abstract class Person {
        public abstract void play()}
    
    • 1
    • 2
    • 3

    抽象类不能实例化,不能直接创建对象。抽象类是用来被继承的,继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类,使用 abstract 关键字修饰


    抽象方法:抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型,方法名称和所需要的参数,没有方法体,也就是说抽象方法只需要声明而不需要事先,当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract

    修饰符 abstract 返回值类型 方法名(参数列表);
    
    • 1
    public abstract void play();
    
    • 1

    抽象方法不能用private、final、static、native修饰

    注意事项:抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类,抽象类本身不具备实际的功能,只能用于派生其子类,抽象类中可以包含构造方法,但是构造方法不能被声明为抽象,抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。


    📝抽象类与普通类的区别

    • 抽象类使用abstract修饰;普通类没有abstract修饰
    • 抽象类不能实例化;普通类可以实例化
    • 抽象类可以包含抽象方法,也可以包含非抽象方法;普通类不能有抽象方法

    📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

    📚愿我们奔赴在各自的热爱里!

  • 相关阅读:
    前端国际化的思考与实践
    C#: 根据url获取https的的证书有效期
    本科生学深度学习,搭建环境,再不入坑就晚了
    Cocos Creator3.8 实战问题(二)cocos creator编辑器中绑定事件引发的bug
    从k8s 的声明式API 到 GPT的 提示语
    Vue开发好伙伴--Visual Studio Code编辑器
    tornado 并发性测试
    echart 仪表盘实现指针的渐变色及添加图片
    沁恒微电子CH347是一款高速USB总线转接芯片
    16 【react-router 6】
  • 原文地址:https://blog.csdn.net/weixin_45393094/article/details/125628588