1. 抽象类本身不能被实例化,可以没有抽象方法
2. 父类与接口有相同的方法时,不会产生冲突,因为只会有一份方法的实现
3, 将Fight接口的canFight方法返回值改为int,此时编译报错
a)错误:The return types are incompatible for the inherited methods Fight.canFight(), Super.canFight()
package com.yjq.cn.interface
public abstract class AbstractTest {
int i = 10;
public static int f(int i) {
return ++i;
}
//无法被调用
public void f1() {
System.out.println("f1");
}
public static void main(String[] args) {
//抽象类可以没有抽象方法
System.out.println("抽象类,应用于不需要产生实例场景:" + AbstractTest.f(10));
System.out.println("---------------");
RealSuper rs = new RealSuper();
((Fly)rs).canFly();
//父类与实现接口重方法名称
((Fight)rs).canFight();
((Super)rs).canFight();
}
}
interface Fly {
void canFly();
}
interface Swim {
void canSwim();
}
interface Fight {
void canFight(); //战斗方法1
}
class Super {
//战斗方法2
public void canFight() {
System.out.println("super.fight()");
}
}
class RealSuper extends Super implements Fly, Swim, Fight {
@Override
public void canFly() {
System.out.println("RealSuper.canFlay()");
}
@Override
public void canSwim() {
System.out.println("RealSuper.canSwim()");
}
}
//output
抽象类,应用于不需要产生实例场景:11---------------
RealSuper.canFlay()
super.fight()
super.fight()