抽象类与接口既有相同点也有不同点。
相同点是,他们都可以作为一种强制性约束,以约束子类必须实现某些方法。基于这一点,抽象类与接口都不能被实例化。
抽象类
abstruct 关键词
抽象类可以包含非抽象方法,这些非抽象方法是可以被子类直接继承复用的。
java类是单继承,所以抽象类也只能是单继承。
public abstruct class Person
{
//非抽象方法,可被子类直接复用
public void say()
{
//...
}
//抽象方法,没有方法体,子类必须实现这个方法
public abstruct void eat();
}
//继承抽象类
public class Manager extends Person
{
//必须实现eat方法
public void eat()
{
//...
}
}
接口
interface 关键词
接口是隐式抽象的,不需要显示声明abstruct关键词
接口可以被多重继承
public interface Animal
{
//隐式抽象
public void run()
}
public interface Man
{
//隐式抽象
public void think()
}
public class Manager extends Person implements Animal,Man
{
//必须实现抽象类Person的eat方法
public void eat()
{
//...
}
//必须实现接口Animal的run方法
public void run()
{
//...
}
//必须实现接口Man的think方法
public void think()
{
//...
}
}