0

原谅那个疯狂的标题...

我试图理解面向对象编程中继承与接口的概念。所以我试图将它与我已经知道的东西联系起来,那就是 CSS。

在 CSS 中,您可以选择在允许元素“继承”样式的层次结构中设置样式:

(就像 OOP 中的继承?)

    a   { color:red; text-decoration:underline; }
    p   { background:black; color:white; padding:20px; } 
    img { background:silver; padding:2px;  } 

或者,使用 .class 样式(这是一种更好的做法):

    .main-links      { color:red; text-decoration:underline; } 
    .main-paragraphs { background:black; color:white; padding:20px; }
    .main-images     { background:silver; padding:2px;  } 

(像 OOP 中的接口?)

我的问题是:

CSS 中的这个概念是否类似于继承与接口(用于 OOP)?还是我有完全错误的想法。

4

2 回答 2

1

简短的回答:你有完全错误的想法。绝对没有人可以使用 CSS 向您解释 OOP 继承/接口。

继承和接口是编程概念(非常基本的设计模式),而 CSS 不是编程语言(不是图灵完备的)。

网上有很多非常易于理解的教程/文章,可以让您很好地理解这两个概念。我建议你阅读它们。

编辑:好吧,再想一想,也许,只是也许,继承可以用CSS来解释。就像 CSS 中的样式属性级联一样,类方法和属性“级联”到派生类。但是,阅读介绍性教程比尝试通过 CSS 理解这些概念要好得多。

于 2013-03-07T08:28:57.623 回答
1

如果将 OOP 与 CSS 进行比较,您会发现可以将接口与样式进行比较,但 CSS 中没有继承这样的东西。

OOP 中的接口几乎就像将类应用于元素一样。就像你可以给一个元素添加几个类来组合不同的外观一样,你可以给一个类添加几个接口来组合不同的行为。

如果你在 CSS 中有继承,它会是这样的:

.main-links { color: red; }

.info-links { @inherits: .main-links; font-weight: bold; }

在这里,一个规则将继承另一个规则,因此您可以仅将类info-links应用于一个元素以获得main-links.

(当然这在 CSS 中是行不通的,因为规则没有名称,只有选择器,而且选择器甚至不必是唯一的,因此它们不能用于识别规则。)

于 2013-03-07T08:52:27.523 回答