【问题标题】:What does abstraction actually mean in java? [duplicate]抽象在Java中实际上意味着什么? [复制]
【发布时间】:2017-06-03 11:12:06
【问题描述】:
abstract class Bank{    
  abstract int getRateOfInterest();    
}    

class SBI extends Bank{    
  int getRateOfInterest(){return 7;}    
} 

class PNB extends Bank{    
  int getRateOfInterest(){return 8;}    
}    

class TestBank{    
  public static void main(String args[]){    
    Bank b;  
    b=new SBI();  
    System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
    b=new PNB();  
    System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
  }
}    

所以我在书本和网上看到的是:“抽象是一个隐藏实现细节并只向用户显示功能的过程。”

所以我的问题是,如果我在 Bank 类中编写实现,它不会被隐藏吗?用户可以看到那个实现吗?

这里“隐藏”的实际意思是什么?

【问题讨论】:

  • 你应该学会缩进你的代码,它让你和其他人更容易阅读。
  • 我很抱歉,安迪
  • 根据您的简单示例,是的,如果您的程序的其他部分被传递给Bank 的某个实例,它不会关心getRateOfInterest 的实际计算方式,只有Bank 提供获得它的手段。例如,SBI 可以附加附加功能,但由于您程序的其他部分只处理 Bank,他们不会知道,因此对他们隐藏了功能
  • abstractconcrete 相反。即“在摘要中,您可以执行该操作”与“如果您在此处执行此操作就是会发生什么”

标签: java abstract abstraction


【解决方案1】:

不要将抽象与混淆混淆。抽象可以帮助开发人员专注于接口而不是实现,但这并不意味着实现细节不应该达到。

在您的情况下,开发人员可能专注于 Bank 类,而不考虑子类 SBI 和 PNB。实现的细节对用户是隐藏的,但并不是说用户想找就找不到。

【讨论】:

  • 这是评论,不是答案。在获得所需的代表之前,不要通过发布 cmets 作为答案来滥用系统。这样做会吸引反对票并延迟获得必要的代表。
猜你喜欢
  • 2014-02-08
  • 1970-01-01
  • 2012-01-26
  • 2020-02-15
  • 2020-11-30
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多