java abstract class vs interface

原文

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值