Oop 接口是最高级别的抽象吗?
我对抽象和封装感到困惑。我觉得类是封装的,因为它封装了数据和行为,而接口是抽象的。请评论一下维基百科上的文章。特别是,您可能对面向对象编程的抽象感兴趣。我引用了以下相关章节的部分内容: 在面向对象编程理论中, 抽象涉及到 定义表示抽象对象的对象 能够执行工作、报告的“演员” 打开并更改其状态,以及 与中的其他对象“通信” 系统。术语封装 指隐藏状态详细信息, 但是扩展了数据类型的概念 从早期的编程语言到 将行为与行为紧密联系在一起 数据,以及标准化的方式 不同的数据类型相互作用,这是非常重要的 抽象的开始。什么时候 抽象进入到 已定义操作,启用对象 要替换的不同类型, 这叫做多态性。当它 相反的方向进行, 在类型或类中, 构造它们以简化复杂的 一组关系,称为 委托或继承Oop 接口是最高级别的抽象吗?,oop,interface,Oop,Interface,我对抽象和封装感到困惑。我觉得类是封装的,因为它封装了数据和行为,而接口是抽象的。请评论一下维基百科上的文章。特别是,您可能对面向对象编程的抽象感兴趣。我引用了以下相关章节的部分内容: 在面向对象编程理论中, 抽象涉及到 定义表示抽象对象的对象 能够执行工作、报告的“演员” 打开并更改其状态,以及 与中的其他对象“通信” 系统。术语封装 指隐藏状态详细信息, 但是扩展了数据类型的概念 从早期的编程语言到 将行为与行为紧密联系在一起 数据,以及标准化的方式 不同的数据类型相互作用,这是非常重要的
一般来说,我会说接口和类应该是抽象的例子,将数据作为概念上的“东西”处理,而不是原始数据。封装用于使这些抽象与概念上不同的“事物”的其他抽象很好地协同工作。我认为您的术语很混乱
Q) 您会问“我可以说,抽象是通过封装和多态性实现的最顶层层次结构吗?” A) 我不能回答这个问题,我不知道你说的“最高”和“最高”是什么意思。 这里没有等级制度 是一种抽象形式,它可以在不使用面向对象的情况下实现,它应该在层次结构中的什么位置 我对层次结构所能做的最好的定义就是这样(直接从我自己的头脑中产生,所以YMMV)
封装的目的是隐藏实现细节: 一个精心设计的例子:
public class Person {
private int age;
public boolean canBuyBeer() {
return age >= 21;
}
}
您可以稍后将其更改为:
public class Person {
private int age;
private boolean isInUSA
public boolean canBuyBeer() {
if( isInUSA )
return age >= 21;
else
return age >= 18;
}
}
关于年龄和出身的规则可以改变,但打电话的人不需要知道
接口可用于抽象出不同的类型。考虑这一点:
public interface Beverage {
public boolean containsAlchohol;
}
public class Soda implements Beverage {
public boolean containsAlchohol {
return false;
}
}
public class Beer implements Beverage {
public boolean containsAlchohol {
return true;
}
}
您可能会更新以下人员:
public class Person {
private int age;
private boolean isInUSA
public boolean canBuyBeverage(Beverage b) {
if( b.containsAlchohol() ) {
if( isInUSA )
return age >= 21;
else
return age >= 18;
}
else {
return true;
}
}
}
因此,如果一个人可以购买某种饮料,那么他就是在封装逻辑。饮料接口抽象出与饮料相关的逻辑
我们可以举更好的例子,但这是总的想法。我认为你说得对。一个界面概括地说:这就是这种事情。一个班级说:这是它的工作原理;我会把细节藏在心里。类是(通常)接口抽象的具体实现。我的评论是:什么?你需要解释的更多。错误的界面。你应该用OOP和你所说的任何语言来标记它,这样我们就可以为你指出正确的方向。这些术语在不同的语言中是否不同。我想OOPS在任何地方都是一样的。我可以说,抽象是通过封装和多态性实现的最高层次结构。