Questions tagged «oop»

面向对象的编程是一种使用“对象”的编程范式:由数据字段和方法及其相互作用组成的数据结构。

6
耦合与内聚
我试图将耦合和内聚的概念简化为一个简洁的定义。有人可以给我一个简短易懂的解释(比此处和此处的Wikipedia定义短)吗?他们如何互动? 谢谢。 有人有一个很好的简短例子吗?

12
JavaScript有类吗?
我和一个朋友上周发生了争执。他说没有JavaScript类之类的东西。 我说有你可以说的 var object = new Object() 他说:“因为没有class用到任何单词。这不是一堂课。” 谁是对的? 注意:为了将来,您需要简洁的Classy JS工具: https://github.com/tnhu/jsface 编辑:2017年7月 ECMAScript 2015中引入的JavaScript类主要是语法糖,而不是JavaScript现有的基于原型的继承。类语法没有向JavaScript引入新的面向对象的继承模型。JavaScript类提供了一种更简单明了的语法来创建对象和处理继承。 -Mozilla ES6类:https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes
71 javascript  oop  class 

12
为什么要使用接口,多重继承与接口,接口的优点?
我对此事仍然有些困惑。我到目前为止发现的是 (这里已经问过类似的问题,但我还有其他几点。) 接口是仅抽象方法和最终字段的集合。 Java中没有多重继承。 接口可用于在Java中实现多重继承。 继承的一个强项是我们可以在派生类中使用基类的代码,而无需再次编写。可能这是继承在那里最重要的事情。 现在.. Q1。由于接口仅具有抽象方法(无代码),因此,我们如何说如果实现任何接口,那么它就是继承?我们没有使用它的代码。 Q2。如果实现接口不是继承,那么如何使用接口实现多重继承? Q3。无论如何,使用接口有什么好处?他们没有任何代码。我们需要在实现它的所有类中一次又一次地编写代码。 那为什么要建立接口呢? 注意:我发现一种情况下接口是有用的。它的一个示例就像在Runnable接口中,我们有public void run()方法,在其中定义线程的功能,并且内置了编码,该方法将作为单独的线程运行。因此,我们只需要编写线程中的操作代码,Rest是预定义的。但是,这也可以使用抽象类和全部来实现。 那么使用接口的确切好处是什么?使用接口实现的真的是多重继承吗?

6
一个接口是否应该继承另一个接口
我似乎找不到答案,只是想确保它是一个好的编码标准。我有A许多不同类使用的接口,并且不想A更改接口。我遇到了一个新的要求,该要求将要求许多实现Interface的类都需要一个枚举A,但是并非所有的类都需要该枚举。我不希望不需要此新枚举的类实现此新功能。因此,我创建B了包含需要添加的新枚举的接口。然后,我使接口B继承接口A,这是我关心的问题,一个接口可以继承另一个接口吗?为了继续进行更改,然后更改了需要新枚举实现接口的类。B而不是interface,A因为它是由interface继承的B。我考虑过在需要它们的类中实现这两个接口,但是我在整个代码中都使用该接口,并且只想使用一个接口浏览类,而不要使用两个接口。 我希望这已经足够清楚(可能很长),但是如果有人可以给我一些建议,或者我做对了或者我做错了,请告诉我。 谢谢!
71 .net  oop  inheritance 



5
是否可以在PHP中声明静态和非静态方法?
我可以将对象中的方法声明为静态方法和非静态方法,且其名称与调用静态方法的名称相同吗? 我想创建一个具有静态方法“ send”和一个调用静态函数的非静态方法的类。例如: class test { private $text; public static function instance() { return new test(); } public function setText($text) { $this->text = $text; return $this; } public function send() { self::send($this->text); } public static function send($text) { // send something } } 我希望能够在这两个函数上调用 test::send("Hello World!"); 和 test::instance()->setText("Hello World")->send(); 可能吗?
70 php  oop 

2
如何检查名称空间中是否存在类?
我有这个: use XXX\Driver\Driver; ... var_dump(class_exists('Driver')); // false $driver = new Driver(); // prints 123123123 since I put an echo in the constructor of this class exit; 好吧……这种行为是非常不合理的(根据PHP创建不存在的类的对象)。有什么方法可以检查给定名称空间下是否存在类?
70 php  oop  namespaces 

12
Smalltalk有什么特别之处?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 在每个技术出版物以及该站点上,人们总是将OO语言与Smalltalk进行比较。我的Java经验是:Smalltalk是否如此重要以至于我应该学习它?


5
为什么此多态C#代码打印出它的功能?
最近,为我提供了以下代码,作为一种难题,以帮助理解OOP-C#中的多态性和继承。 // No compiling! public class A { public virtual string GetName() { return "A"; } } public class B:A { public override string GetName() { return "B"; } } public class C:B { public new string GetName() { return "C"; } } void Main() { A instance = new …

6
如何确保实用程序静态方法的线程安全?
是否可以通过任何常规方法或规则来确保专门用于任何应用程序的各种Utility类的静态方法的线程安全性。在这里,我想特别指出Web应用程序的线程安全性。 众所周知,以不可变对象作为参数的静态方法是线程安全的,而可变对象不是。 如果我有一个实用程序方法可用于的某种操作,java.util.Date并且该方法接受的实例java.util.Date,则该方法将不是线程安全的。那么如何在不更改参数传递方式的情况下使其成为线程安全的呢? public class DateUtils { public static Date getNormalizeDate(Date date) { // some operations } } 课堂也是javax.faces.context.FacesContext可变的吗?将此类的实例传递给此类静态实用程序方法是否安全? 这个类的列表可能很长;这些实例的实例可以作为参数或不能作为参数传递。那么在编写此类实用程序类的代码时我们应牢记哪些要点?


8
在Backbone中访问父类
我需要initialize从继承的MyModel-class内部调用父类的方法,而不是像我今天所做的那样完全覆盖它。 我该怎么办? 这是我的代码现在的外观: BaseModel = Backbone.Model.extend({ initialize: function(attributes, options) { // Do parent stuff stuff } }); MyModel = BaseModel.extend({ initialize: function() { // Invoke BaseModel.initialize(); // Continue doing specific stuff for this child-class. }, });

9
您可以在R中通过引用吗?
您可以通过引用加上“ R”吗?例如,在以下代码中: setClass("MyClass", representation( name="character" )) instance1 <-new("MyClass",name="Hello1") instance2 <-new("MyClass",name="Hello2") array = c(instance1,instance2) instance1 array instance1@name="World!" instance1 array 输出是 > instance1 An object of class “MyClass” Slot "name": [1] "World!" > array [[1]] An object of class “MyClass” Slot "name": [1] "Hello1" [[2]] An object of class “MyClass” Slot "name": …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.