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

举报
辰兮 发表于 2022/07/06 22:37:01 2022/07/06
【摘要】 【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新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!!!

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

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/125628588

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。