java--类继承和实现的接口中含有相同的方法
首先,说一下,当某一个类实现了两个接口的时候,两个接口中存在两个相同的方法,在实现的类中只需实现一个方法的方法体。
当一个类继承一个类,并且实现一个或者多个接口的时候,其中,父类和父接口中存在相同的方法。
如果子类中存在该方法的实现体或者说是覆盖,则使用该类的对象去掉用该方法时候,其实掉用的是来自接口的实现方法,而不是来自父类方法的覆盖。
如果子类中不存在该方法的实现[或者覆盖],在使用该类对象掉用该方法的时候,就会使用从父类继承的方法。同时将这个从父类继承来的方法当作接口方法的实现,也就可以不再实现接口的方法体。
另外值得注意的就是,extends & implements 的书写顺序不能改变。
为了方便记忆可以认为:接口的优先级别要高于父类。
此处附上代码:
package Demo;
interface CanFight {
void fight();
}
interface CanSwim {
void swim();
}
interface CanFly {
void fly();
}
class ActionCharactor {
public void fight() {
System.out.println("fight() from class ");
}
}
class Hero extends ActionCharactor
implements CanFight, CanSwim, CanFly {
public void swim() {
System.out.println("Hero swim.");
}
public void fly() {
System.out.println("Hero fly.");
}
public void fight(){
System.out.println("Hero can fight.");
}
}
public class Demo1_1 {
public static void t(CanFight x) {
x.fight();
}
public static void u(CanSwim s) {
s.swim();
}
public static void w(ActionCharactor x) {
x.fight();
}
public static void v(CanFly x) {
x.fly();
}
public static void main(String[] args) {
// 向上转型
Hero hero = new Hero();
t(hero);
u(hero);
w(hero);
v(hero);
ActionCharactor a = new ActionCharactor();
a.fight();
}
}
java--类继承和实现的接口中含有相同的方法的更多相关文章
- Java基础---继承、抽象、接口
一.概述 继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单 ...
- java类继承总结一 父类类型与子类类型之间的转化问题(转)
java类继承总结一 父类类型与子类类型之间的转化问题 本文将通过一个实例描述父类类型与子类类型之间的转化问题,这个很特殊的问题常常会导致一些潜在的危险,让你整整一个晚上都在调试程序以解决一个让人抓狂 ...
- “全栈2019”Java第八十八章:接口中嵌套接口的应用场景
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java 8——接口中个的默认方法和静态方法
在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...
- java中为什么接口中的属性和方法都默认为public?
4)为什么接口中的属性和方法都默认为public?Sun公司当初为什么要把java的接口设计发明成这样? [新手可忽略不影响继续学习]答:如上所述,马克-to-win:既然接口强于抽象类能胜任作为和外 ...
- Java类继承关系中的初始化顺序
Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类Ini ...
- Java之继承、抽象类、接口篇
一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...
- 探究java接口中的变量与方法
关于变量 java接口里的变量都是默认 pubic static final的 为啥? public 接口得能被所有对象调用 static 这个变量是属于接口本身,而不是实现了接口的对象的 具体来说 ...
- java接口中成员变量和方法的默认修饰符(转)
Java的interface中,成员变量的默认修饰符为:public static final 所以我们在interface中定义成员变量的时候,可以 1:public static final St ...
随机推荐
- Python lambda和reduce函数
看到一篇博文写lambda和reduce函数.笔者小痒了一下,用Python实现一下: #! /usr/bin/env python # -*-coding:utf-8-*- import time ...
- Linux虚拟机与外面系统ping不通,或者连不上网
很多其它具体文档:http://download.csdn.net/download/zml_2015/8843061 非常多人在做linux课程设计的时候,用的linux虚拟机与外面的系统ping不 ...
- linux之grep用法
运用场景:在当前目录下查找,比如代码目录,不需要在.svn目录下,以及ctags生成的tags文件中查找: grep的--exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录: ...
- JSPatch技术文档
一.背景需求介绍 为什么我们需要一个热修复(hot-fix)技术? 工作中容易犯错.bug难以避免. 开发和测试人力有限. 苹果Appstore审核周期太长,一旦出现严重bug难以快速上线新版本. 作 ...
- 【转】Tomcat7.0.42源代码运行环境搭建
转自:http://tyrion.iteye.com/blog/1903608 以前看过Tomcat5的一部分源代码,当时只看了个大概的启动分析,后来看了<How Tomcat Works> ...
- zookeeper集群配置
zookeeper集群网上demo一大堆,补充一下一些不明白的地方 1 复制2份zookeeper,savle作为备份节点 2.配置zoo.cfg # The number of millisecon ...
- pygame初步(一)绘制一个运动的矩形
<More Python Programming for the Absolute Beginner>一书中的第二章练习3(P33) 使用Python的Pygame库 import sys ...
- mysql在linux上的一点操作
1,查看打开端口. show variables like 'port'; 2, 指定ip,用户名,密码 1 grant all privileges on *.* to root@"% ...
- 英文:known good board ( KGB) / 中文:测试用标准板,黄金板
作为标准部件提供的.完全符合设计电气性能的在制板,可以作为与其它印制板比较的标准.
- PHP中magic_quotes_gpc和 magic_quotes_runtime区别及其反斜线转义问题
php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc 或 magic_quotes_runtime 设置为on时,当数据遇到 单引号' 和 双引号&quo ...