Java笔记|当接口与抽象类发生"撞衫"

我前几天在复习JAVA里的抽象类和接口的时候,在总结他们区别的时候,把接口写成了可以写入抽象方法和main方法,后来经过朋友一起探讨确定,这一条是不对的,接口中是不能写入main方法的。但是在此之前,我亲手用代码去验证了一遍,确定是可以写main,因为并不会报错。后来我那个朋友又问了我用的jdk是什么版本的,我跟他说是1.8版本的。然后才知道,在1.8版本以后,在接口里面写main方法,都是不会报错的,但是这样写也是不可以的,因为虽然不会报错,但是在接口里这样写没有任何意义。
后来我们就结束了这个问题的讨论,但是很快我就发现了另一个问题,这个问题的探讨,仿佛发现了新大陆一般。
这个问题是这样的:
一共有三个类,我们就先把他叫成ABC三个类,然后A类是一个实现类,B类是一个抽象类,C是一个接口。他们三个类之间的层次逻辑关系是这样的,A类继承了B类,同时也实现了C类的接口。然后在B类和C类里面,有也仅有一个方法,是一个抽象方法,但是这两个方法重名,方法名是一致的,出现了"撞衫"现象。然后在A类里面实现重写,只实现了一遍,也就是说只写了一个这个方法的实现。然后我们就探讨这种情况是怎么样的?为什么出现这种情况,A类还不报错?后来我们经过了无数次的探讨,无数次的实验研究,终于得出了一个结论,就是A类的这个重写实现,既实现了B类,又实现了C的接口。这就是传说中的"一套代码,多端部署"(๑ºั╰╯ºั๑)。我是这样进行实验的,当时我手里正好有一套Swing的项目,然后当时做的是给按钮加一个单击事件的处理。当时我就在这个包下面新建了一个抽象类,里面定了一个抽象方法,这个抽象方法的格式与触发按钮单击事件执行的那个方法格式一样,方法名也一致,除了添加这个抽象方法之外,还在那个抽象类里加了一个属性,String类型的,还给它初始化了一个值。然后就在那个实现类里面继承了这个新建的抽象类,然后修改了一下触发按钮单击事件执行的那个方法的方法体,改成了打印输出那个新建的抽象类中的那个String类型的属性,最后把整个项目运行了一下,Run!Run!Run!
见证奇迹的时刻到了!刷刷刷!运行成功!!!弹出了那个小小的WINDOWS窗口,当我点下按钮之后,控制台里果真显示了那个属性对应的值!就是这样,然后我的实验结束了,验证了我们讨论的结论是正确的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值