学习Objective-C并阅读示例代码,我注意到对象通常是使用以下方法创建的:
SomeObject *myObject = [[SomeObject alloc] init];
Run Code Online (Sandbox Code Playgroud)
代替:
SomeObject *myObject = [SomeObject new];
Run Code Online (Sandbox Code Playgroud)
是否有理由这样做,因为我已经读到它们是等同的?
请解释我何时应该使用PHP interface以及何时使用PHP abstract class?
我如何才能改变自己abstract class的态度interface?
我在某人的代码中看到了这个.这是什么意思?
def __enter__(self):
return self
def __exit__(self, type, value, tb):
self.stream.close()
Run Code Online (Sandbox Code Playgroud)
from __future__ import with_statement#for python2.5
class a(object):
def __enter__(self):
print 'sss'
return 'sss111'
def __exit__(self ,type, value, traceback):
print 'ok'
return False
with a() as s:
print s
print s
Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用JavaScript制作OOP.它是否具有接口概念(例如Java interface)?
所以我可以创建一个监听器......
如何List在不使用的情况下将C#中包含的项目转移到另一个中foreach?
MSDN说你应该在需要轻量级对象时使用结构.当结构比类更可取时,还有其他任何情况吗?
有些人可能忘记了:
我理解结构和类之间的技术差异,我只是对使用结构时没有很好的感觉.
我想知道使用这些中的任何一个是否有任何优势,我应该走哪条路?
构造方法:
var Class = function () {
this.calc = function (a, b) {
return a + b;
};
};
Run Code Online (Sandbox Code Playgroud)
原型方法:
var Class = function () {};
Class.prototype.calc = function (a, b) {
return a + b;
};
Run Code Online (Sandbox Code Playgroud)
我不喜欢这样,使用原型,方法定义与类分开,我不知道是否有任何特定的原因我应该使用它而不是第一种方法.
此外,使用函数文字定义"类"是否有任何好处,而不仅仅是函数定义:
var Class = function () {};
Run Code Online (Sandbox Code Playgroud)
VS
function Class () {};
Run Code Online (Sandbox Code Playgroud)
谢谢!
在MDN文章面向对象的Javascript简介中关于继承的部分中,我注意到他们设置了prototype.constructor:
// correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;
Run Code Online (Sandbox Code Playgroud)
这有什么重要意义吗?省略它可以吗?
考虑一下 - 基类A,继承自A的类B,继承自B的类C.什么是在构造函数中调用父类构造函数的通用方法?如果这仍然听起来太模糊,这里有一些代码.
class A(object):
def __init__(self):
print "Initialiser A was called"
class B(A):
def __init__(self):
super(B,self).__init__()
print "Initialiser B was called"
class C(B):
def __init__(self):
super(C,self).__init__()
print "Initialiser C was called"
c = C()
Run Code Online (Sandbox Code Playgroud)
这就是我现在这样做的方式.但它仍然看起来有点过于非泛型 - 您仍然必须手动传递正确的类型.
现在,我尝试使用self.__class__作为super()的第一个参数,但是,显然它不起作用 - 如果你把它放在C的构造函数中 - 公平,B的构造函数被调用.如果你在B中做同样的事情,"self"仍然指向一个C的实例,所以你最终再次调用B的构造函数(这以无限递归结束).
现在没有必要考虑钻石继承,我只想解决这个具体问题.
oop ×10
javascript ×3
inheritance ×2
python ×2
.net ×1
abstraction ×1
c# ×1
constructor ×1
copy ×1
foreach ×1
interface ×1
list ×1
objective-c ×1
php ×1
prototype ×1