Java接口的方法是隐式抽象的,不能实现。
Java抽象类可以具有实现默认行为的实例方法。
Java接口中声明的变量是默认的final。
Java类可以实现多个接口,但它只能扩展一个抽象类。
例子:
public interface LoginAuth{
public String encryptPassword(String pass);
public void checkDBforUser();
}
现在假设你的应用程序中有3个数据库。 那么该数据库的每个实现都需要定义上述2种方法:
public class DBMySQL implements LoginAuth{
// Needs to implement both methods
}
public class DBOracle implements LoginAuth{
// Needs to implement both methods
}
public class DBAbc implements LoginAuth{
// Needs to implement both methods
}
但是如果encryptPassword()不是依赖于数据库的,而且每个类都是一样的呢? 那么以上就不是一个好办法。
相反,请考虑这种方法:
public abstract class LoginAuth{
public String encryptPassword(String pass){
// Implement the same default behavior here
// that is shared by all subclasses.
}
// Each subclass needs to provide their own implementation of this only:
public abstract void checkDBforUser();
}
现在在每个子类中,我们只需要实现一个方法 - 数据库依赖的方法。