标签:pre 需要 oid 结构 多个 demo stat 区别 int
包含一个抽象方法的类必须是抽象类
抽象类和抽象方法都是用abstract关键字声明
抽象方法只需要声明而不需要实现
抽象类必须被子类继承
子类不是抽象类时必须重写父类中的所有抽象方法
子类是抽象类时仍可以继续声明成抽象方法
public abstract class Hero{
public abstract boolean canFight(Hero hero);
public abstract void fight(Hero hero);
}
/** 子类不是抽象类*/
public class Worrior extends Hero{
@Overrride
public boolean canFight(Hero hero){
return false;
}
@Override
public void fight(Hero hero){}
}
/** 子类是抽象类*/
public abstract class LongRangerHero extends Hero{
//继续作为抽象方法,也可以省略
public abstract void fight(Hero hero);
@Override
public boolean canFight(Hero hero){
return true;
}
}
/** 子类不是抽象类*/
public class Ranger extends LongRanger{
@Override
public void fight(Hero hero){}
}
/** 子类不是抽象类*/
public class Magical extends LongRangerHero{
@Override
public void fight(Hero hero){}
}
抽象类不可以用new实例化
修饰符 interface 接口名
如:public interface Demo{}
类 implements 接口
使设计和实现完全分离,能够更自然使用多态,可以更容易搭建程序框架,可以更容易更换实现
区别 | 接口 | 抽象类 |
---|---|---|
定义关键字 | interface | abstract class |
组成 | 全局常量,抽象方法 | 常量,变量,抽象方法,普通方法,构造方法 |
权限 | 只能是public | 可以使用各种权限 |
关系 | 接口不能够继承抽象类,但可以继承多接口 | 一个抽象类可以实现多个接口 |
使用 | 子类使用implements实现接口 | 子类使用extends继承抽象类 |
局限 | 一个子类可以实现多个接口 | 一个子类只能继承一个抽象类 |
抽象类的缺点:一个子类只能继承一个抽象类,存在单继承的局限
实际开发中,抽象类和接口都可以用的情况下,优先使用接口,避免单继承的局限
标签:pre 需要 oid 结构 多个 demo stat 区别 int
原文地址:https://www.cnblogs.com/Zhouge6/p/12250049.html