您的位置:首页 > 编程语言 > Java开发

java--类继承和实现的接口中含有相同的方法

2013-10-19 15:14 441 查看
首先,说一下,当某一个类实现了两个接口的时候,两个接口中存在两个相同的方法,在实现的类中只需实现一个方法的方法体。

当一个类继承一个类,并且实现一个或者多个接口的时候,其中,父类和父接口中存在相同的方法。

  如果子类中存在该方法的实现体或者说是覆盖,则使用该类的对象去掉用该方法时候,其实掉用的是来自接口的实现方法,而不是来自父类方法的覆盖。

  如果子类中不存在该方法的实现[或者覆盖],在使用该类对象掉用该方法的时候,就会使用从父类继承的方法。同时将这个从父类继承来的方法当作接口方法的实现,也就可以不再实现接口的方法体。

另外值得注意的就是,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();
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐