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

mingyuan0715 · 2013年07月15日 · 最后由 rainchen 回复于 2013年07月15日 · 4070 次阅读

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

2 楼 已删除

ruby 的 mixin 算不算?

Python 算不算坑爹

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

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

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

js 一点都不先进...

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

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

#9 楼 @blacktulip

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

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

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

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

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

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

有 actionscript 3

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

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

#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 || {});

#17 楼 @jiyinyiyong 是 protected 不是 private

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

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