Ruby 有哪种程序语言同时拥有原型继承和类继承的特性的么?

mingyuan0715 · 发布于 2013年7月15日 · 最后由 rainchen 回复于 2013年7月15日 · 2046 次阅读
2329

js的部分设计思维很先进,原型继承和类继承分别体现了真实世界里的两种事物继承关系。不知道有没有哪种程序语言同时有这两种特性的?

共收到 20 条回复
4491
bydmm · #1 · 2013年7月15日

lisp

2楼 已删除
681
sevk · #3 · 2013年7月15日

ruby 的 mixin 算不算?

96
bhuztez · #4 · 2013年7月15日

Python算不算坑爹

2880
luikore · #5 · 2013年7月15日

ruby class A 是类, class << A 是原型

207
blacktulip · #6 · 2013年7月15日

求助,体现了真实世界哪两种继承关系啊?

2209
cloudsben · #7 · 2013年7月15日

#1楼 @bydmm lisp 哪里有类继承?

2880
luikore · #8 · 2013年7月15日

js一点都不先进...

另外用继承去理解 prototype 就永远理解不了了...

207
blacktulip · #9 · 2013年7月15日

#8楼 @luikore 啊啊啊,能给我讲讲应该怎么理解么?我现在就是没法理解这个 prototype

2329
mingyuan0715 · #10 · 2013年7月15日

#5楼 @luikore thanks

2880
luikore · #11 · 2013年7月15日 1 个赞

#9楼 @blacktulip

class-based OO 的方法论是从忽悠做起: 先给对象关系建模, 全部设计好后再写代码, 对象的关系由类型的关系决定, 由于关系往往是静态的运行时不可变的, 可以用 "继承" 这个词表达重用的意图.

prototype-based OO 不讲继承, 因为对象的原型可以换掉和修改, 和"继承"这个隐喻区别很大, 用"继承"去理解就是误解... prototype 的方法论是不忽悠直接开始码代码: 先写一部分的行为, 有必要重用时再考虑把它变成 prototype. 对象关系不和类型挂钩, 运行时可变.

从能力上看, prototype 可以模拟 class, class 很难模拟 prototype.

http://en.wikipedia.org/wiki/Prototype-based_programming

207
blacktulip · #12 · 2013年7月15日

#11楼 @luikore 噢,是这么回事,有点儿明白了……多谢多谢。 那为什么你说 js 不先进呢?

2880
luikore · #13 · 2013年7月15日

#12楼 @blacktulip ... old idea, stupid syntax ...

96
chita · #14 · 2013年7月15日

有 actionscript 3

377
rainchen · #15 · 2013年7月15日

#12楼 @blacktulip 用JS我还没找到能实现protected成员的方法

90
jiyinyiyong · #16 · 2013年7月15日

#12楼 @blacktulip 现在日常写的 JS 为了保证兼容性和十年前的差别没多少

90
jiyinyiyong · #17 · 2013年7月15日

#15楼 @rainchen 私有变量? http://w2ui.com/web/blog/1/A-Variation-of-JavaScript-Module-Pattern

// 3. Augmentation of the module
var module = (function (mod) {  
    // private variables and functions
    var private = 1;

    // body of the module
    mod.doSomething = function doSomething() {
        // You can put any JavaScript code here
    }

    // return public part
    return mod;
})(module || {});
377
rainchen · #18 · 2013年7月15日

#17楼 @jiyinyiyong 是protected不是private

90
jiyinyiyong · #19 · 2013年7月15日

#18楼 @rainchen 呃, 我弄错了

377
rainchen · #20 · 2013年7月15日

#19楼 @jiyinyiyong 对比ruby的public, private, protected

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册