java abstract class vs interface

来源:互联网 发布:plsql连接其他数据库 编辑:程序博客网 时间:2024/06/05 11:12

原文

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();}
现在在每个子类中,我们只需要实现一个方法 - 数据库依赖的方法。

原创粉丝点击