我知道我的问题将在发布后立即关闭,但让我告诉你,我一直在该站点上搜索 Java 示例方面的明显差异。请不要急于结束问题。
我写了以下内容:
public class Bank {
public String name="XXX Bank";
private int noOfCust;
public int getNoOfCust() {
return getNoOfCusts() + 2;
}
public void setNoOfCust(int noOfCust) {
if(noOfCust > 0)
{
this.noOfCust = noOfCust;
}
}
private int getNoOfCusts()
{
noOfCust = 100;
return noOfCust;
}
}
此处,“noOfCust 是被隐藏的数据”。我不会通过引入 private getNoOfCusts() 来公开实现部分。所以我相信这是封装,因为我已经将所有细节捆绑在一个类中并且也隐藏了数据。
问题一:如果这个强封装呢?如果不是,我如何改进它以使其被强封装?
问题 2: 抽象意味着完全隐藏实现。所以我上面做的是抽象?
我出于沮丧而发布了这个问题,因为我已经向面试官提供了上述解释,面试官告诉我,这不是正确的意思。
P.S:请根据上面的例子回答。我不需要实时示例或假设。
最佳答案
选择必要的属性并隐藏不需要的细节是抽象
。例如考虑人。 Person 具有 eyes、eyeColor、skinColor 属性。但是如果他去 Bank,那么 Bank 会做他的抽象并且不考虑这些 Person 的属性但是它选择 name,address,phone_number。这是抽象。你误会了。
封装简单来说就是将对象的状态(属性)和行为(方法)绑定(bind)在一起。如果您正在创建类,那么您就是在进行封装。
来自 wiki :在 C++、Object Pascal 或 Java 等面向对象的编程语言中,抽象的概念本身已成为一种声明性陈述——使用关键字 virtual(在 C++ 中)或 abstract(在 Java 中)。在这样的声明之后,程序员有责任实现一个类来实例化声明的对象。
关于java - 封装和抽象差异借助 Java 中的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172084/