Questions tagged «oop»

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


20
我可以在PHP中使用多个类来扩展一个类吗?
如果我有几个具有所需功能的类,但想单独存储以便组织使用,我可以扩展一个类以同时拥有这两个类吗? 即 class a extends b extends c 编辑:我知道如何一次扩展一个类,但是我正在寻找一种使用多个基类立即扩展一个类的方法-AFAIK您无法在PHP中做到这一点,但是应该有一些解决方法,而不必诉诸于此class c extends b,class b extends a
150 php  class  oop  extends 

7
静态和密封等级差异
静态类中是否有实现的类?手段: static class ABC : Anyclass 在密封类和静态类中都可以继承任何类吗? 手段: static class ABC : AClass {} 和 sealed class ABC : AClass {} 我在某种程度上可能错了吗?
150 c#  .net  oop  static  sealed 



9
Java Map为什么不扩展Collection?
事实Map<?,?>并非如此,这让我感到惊讶Collection<?>。 我认为,如果这样声明,那将是很有意义的: public interface Map<K,V> extends Collection<Map.Entry<K,V>> 毕竟,Map<K,V>是的集合Map.Entry<K,V>,不是吗? 那么,为什么没有这样一个充分的理由实现它呢? 感谢Cletus提供的最权威的答案,但是我仍然想知道为什么,如果您已经可以查看Map<K,V>as Set<Map.Entries<K,V>>(通过entrySet()),那么它不仅扩展了该接口。 如果a Map是a Collection,则元素是什么?唯一合理的答案是“键值对” 确实interface Map<K,V> extends Set<Map.Entry<K,V>>会很棒! 但这提供了非常有限的(且不是特别有用的)Map抽象。 但是,如果是这种情况,那么为什么要entrySet由接口指定?它必须以某种方式有用(我认为很容易为该职位辩护!)。 您既不能询问给定键所映射的值,也不能在不知道给定键所映射的值的情况下删除给定键的条目。 我并不是说这就是全部Map!它可以并且应该保留所有其他方法(除外entrySet,现在已经多余了!)!
146 java  oop  collections 

6
私人与受保护-可见性良好做法关注
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我一直在寻找,我知道理论上的区别。 public-任何类/函数都可以访问该方法/属性。 protected-仅此类和任何子类可以访问该方法/属性。 私有 -只有此类可以访问方法/属性。它甚至不会被继承。 很好,问题是,它们之间的实际区别是什么?什么private时候使用protected?什么时候使用?在这方面是否有标准或可接受的良好实践? 到目前为止,为了保留继承和多态的概念,我使用public应从外部访问的所有内容(例如构造函数和主类功能),以及protected内部方法(逻辑,辅助方法等)。我在正确的轨道上吗? (请注意,这个问题是给我的,但也供将来参考,因为我还没有看到像这样的问题)。

4
是MATLAB OOP运行缓慢还是我做错了什么?
我与实验MATLAB OOP,因为一开始我模仿我的C ++的记录器类和我把我所有的字符串辅助函数在String类,以为这将是巨大的,能够做的事情一样a + b,a == b,a.find( b )而不是strcat( a b ),strcmp( a, b ),检索的第一个元素strfind( a, b ),等等。 问题:减速 我把以上这些东西都使用了,立即注意到速度急剧下降。我做错了吗(由于我有限的MATLAB经验,这肯定是可能的),还是MATLAB的OOP只是引入了很多开销? 我的测试用例 这是我对字符串所做的简单测试,基本上只是添加一个字符串,然后再次删除添加的部分: 注意:实际不要在实际代码中编写这样的String类!Matlab现在具有本机string数组类型,您应该使用它。 classdef String < handle .... properties stringobj = ''; end function o = plus( o, b ) o.stringobj = [ o.stringobj b ]; end function n = …

5
何时使用嵌套类和模块中嵌套的类?
我对何时使用子类和模块非常熟悉,但是最近我看到了这样的嵌套类: class Foo class Bar # do some useful things end end 以及嵌套在模块中的类如下: module Baz class Quux # more code end end 文档和文章都很稀少,或者我对这个主题的教育不足,无法摸索正确的搜索词,但是我似乎找不到关于该主题的太多信息。 有人可以提供示例或链接到有关为什么/何时使用这些技术的帖子吗?
144 ruby  oop 

6
如何在Python中设计类?
我在以前的问题中为检测爪子中的爪子和脚趾提供了非常出色的帮助,但是所有这些解决方案一次只能进行一次测量。 现在,我得到的数据包括: 大约30条狗; 每个都有24个测量值(分为几个子组); 每次测量至少有4个接触点(每只爪子一个),并且 每个联系人分为5部分, 具有几个参数,例如接触时间,位置,总力等。 显然,将所有内容粘贴到一个大对象中并不会减少它,因此我认为我需要使用类而不是当前的许多函数。但是,即使我已经阅读了学习Python的有关类的章节,也无法将其应用于我自己的代码(GitHub链接) 我也觉得每次我想获取一些信息时处理所有数据都是很奇怪的。一旦知道了每个爪子的位置,就没有理由再进行计算了。此外,我想比较同一只狗的所有爪子,以确定哪个接触属于哪个爪子(前/后,左/右)。如果我继续只使用函数,那将变得一团糟。 因此,现在我正在寻找有关如何创建类的建议,这些类将使我能够以明智的方式处理我的数据(链接到一只狗的压缩数据)。
143 python  oop  class-design 

10
关于如何在python中使用属性功能的真实示例?
我对如何@property在Python中使用感兴趣。我阅读了python文档,并认为其中的示例只是一个玩具代码: class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x 我不知道通过包装_x用属性装饰器填充的内容可以获得什么好处。为什么不只是实现为: class C(object): def __init__(self): self.x = None 我认为,属性功能在某些情况下可能很有用。但当?有人可以给我一些真实的例子吗? 谢谢。

20
Java中带有参数的Singleton
我正在阅读Wikipedia上的Singleton文章,并且遇到了以下示例: public class Singleton { // Private constructor prevents instantiation from other classes private Singleton() {} /** * SingletonHolder is loaded on the first execution of Singleton.getInstance() * or the first access to SingletonHolder.INSTANCE, not before. */ private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); …

5
Java`final`方法:它有什么承诺?
在Java类中,可以将方法定义为final,以标记该方法不能被覆盖: public class Thingy { public Thingy() { ... } public int operationA() {...} /** this method does @return That and is final. */ public final int getThat() { ...} } 这很明显,它可能对防止意外的覆盖或性能有所帮助-但这不是我的问题。 我的问题是:从OOP的角度,我理解,通过定义一种方法final,类设计器保证该方法将始终按所描述或隐含的方式工作。但这通常可能超出了类作者的影响,如果该方法执行的操作更为复杂,则仅提供属性即可。 语法约束对我来说很清楚,但是在OOP意义上有什么含义?final大多数班级作者在这种意义上是否正确使用了? 一种final方法承诺什么样的“合同” ?
141 java  oop  final 

12
在php中创建匿名对象
众所周知,使用JavaScript创建匿名对象很容易,就像下面的代码一样: var object = { p : "value", p1 : [ "john", "johnny" ] }; alert(object.p1[1]); 输出: an alert is raised with value "johnny" 可以在PHP中应用相同的技术吗?我们可以在PHP中创建匿名对象吗?
141 php  oop  object 

6
私有纯虚函数的意义是什么?
我在头文件中遇到以下代码: class Engine { public: void SetState( int var, bool val ); { SetStateBool( int var, bool val ); } void SetState( int var, int val ); { SetStateInt( int var, int val ); } private: virtual void SetStateBool(int var, bool val ) = 0; virtual void SetStateInt(int var, int …

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.