有人能客观地告诉我面向对象编程和基于类/基于类的编程有什么区别吗?我知道一些面向对象的基本知识,但我对面向类的范例一无所知。一个有启发性的例子将是非常受欢迎的(它不一定是某种代码-一个简短的解释就足够了)。谢谢。
发布于 2020-04-03 00:36:31
基于类的编程精确地描述了大多数通用语言所支持的面向对象编程的常见形式:对象行为是根据对象是实例的类定义的。
下面是一个面向类编程的示例(在Python中):
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 == 3bar“继承”它对属性one和two的支持,这些属性来自于类Foo,后者是Bar的子类。
(是的,当你听到“面向对象的编程”时,你就是这么想的。)
相反,基于原型的编程将不使用类,而只需根据另一个对象来定义一个对象。下面是一个用https://en.wikipedia.org/wiki/Prototype-based_programming编写的用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继承的内容。
https://stackoverflow.com/questions/61002599
复制相似问题