首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向对象编程与面向类编程

面向对象编程与面向类编程
EN

Stack Overflow用户
提问于 2020-04-02 23:06:33
回答 1查看 1.4K关注 0票数 2

有人能客观地告诉我面向对象编程和基于类/基于类的编程有什么区别吗?我知道一些面向对象的基本知识,但我对面向类的范例一无所知。一个有启发性的例子将是非常受欢迎的(它不一定是某种代码-一个简短的解释就足够了)。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 00:36:31

基于类的编程精确地描述了大多数通用语言所支持的面向对象编程的常见形式:对象行为是根据对象是实例的类定义的。

下面是一个面向类编程的示例(在Python中):

代码语言:javascript
复制
class Foo:
    def __init__(self, x, y):
        self.one = x
        self.two = y

class Bar(Foo):
    def __init__(self, z, **kwargs):
        super().__init__(**kwargs)
        self.three = z

bar = Bar(x=1, y=2, z=3)

assert bar.one == 1
assert bar.two == 2
assert bar.three == 3

bar“继承”它对属性onetwo的支持,这些属性来自于类Foo,后者是Bar的子类。

(是的,当你听到“面向对象的编程”时,你就是这么想的。)

相反,基于原型的编程将不使用类,而只需根据另一个对象来定义一个对象。下面是一个用https://en.wikipedia.org/wiki/Prototype-based_programming编写的用JavaScript编写的简短示例。(这也是前面基于类的示例所基于的。)

代码语言:javascript
复制
var foo = {one: 1, two: 2};

var bar = Object.create(foo);

bar.three = 3;

bar.one; // 1
bar.two; // 2
bar.three; // 3

我们没有定义两个类,其中一个继承了另一个类,并用于定义bar使用的属性,而是定义了一个bar将继承的“泛型”对象foo。我们通过使用bar作为“原型”来创建foo;除了为bar显式定义任何内容之外,它还将继承从foo继承的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61002599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档