有没有办法在Swift语言中创建一个抽象类,或者这是一个像Objective-C一样的限制?我想创建一个类似于Java定义为抽象类的抽象类.
在Visual Studio中,如何显示从基类继承的所有类?
例如,在ASP.NET MVC中有几种" ActionResult "类型 - 它们都继承自/实现基类ActionResult.
看起来除非你只是"知道" View并且Json是有效的ActionResult类型,否则你无法轻易找到这些信息.
请证明我错了.
对象浏览器中有什么东西可以让这个很容易找到吗?
我甚至想在Visual Studio之外寻找工具的建议来发现有关各种类的信息.例如:Resharper中有什么东西可以帮助我吗?
为什么Object类是基于Java的基类,而不是抽象的?
我真的很长时间都有这个问题,这里纯粹是出于好奇而被问到这一点.我的代码或任何人的代码都没有破坏因为它不是抽象的,但我想知道为什么它们具体化了?
为什么有人想要这个Object类的"实例"(而不是它的存在,也就是引用)?一种情况是一个糟糕的同步代码,它使用一个Object的实例进行锁定(至少我用这种方式一次......我的坏).
是否有任何实际使用Object类的"实例"?它的实例化如何适合OOP?如果他们将其标记为抽象(当然在为其方法提供实现之后)会发生什么?
我在C#中的测试代码:
namespace DSnA
{
public abstract class Test : IComparable
{
}
}
Run Code Online (Sandbox Code Playgroud)
导致以下编译器错误:
error CS0535: 'DSnA.Test' does not implement interface member
'System.IComparable.CompareTo(object)'
Run Code Online (Sandbox Code Playgroud)
由于该类Test是一个抽象类,为什么编译器要求它实现接口?这个要求不应该仅仅是具体课程的必修课吗?
在C#中,何时应该使用接口,何时应该使用抽象类?决定因素是什么?
有没有办法在PHP中定义抽象类属性?
abstract class Foo_Abstract {
abstract public $tablename;
}
class Foo extends Foo_Abstract {
//Foo must 'implement' $property
public $tablename = 'users';
}
Run Code Online (Sandbox Code Playgroud) 当您使用抽象类来实现接口时,Java中会发生奇怪的事情:某些接口的方法可能完全丢失(即既不存在抽象声明也不存在实际实现),但编译器不会抱怨.
例如,给定接口:
public interface IAnything {
void m1();
void m2();
void m3();
}
Run Code Online (Sandbox Code Playgroud)
以下抽象类在没有警告或错误的情况下快速编译:
public abstract class AbstractThing implements IAnything {
public void m1() {}
public void m3() {}
}
Run Code Online (Sandbox Code Playgroud)
你能解释一下原因吗?
我想用快速语言创建一个抽象函数.可能吗?
class BaseClass {
func abstractFunction() {
// How do I force this function to be overridden?
}
}
class SubClass : BaseClass {
override func abstractFunction() {
// Override
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道什么会让程序员选择Pimpl习语或纯虚拟类和继承.
我知道pimpl习惯用于为每个公共方法和对象创建开销提供一个明确的额外间接.
另一方面,Pure虚拟类带有继承实现的隐式间接(vtable),我理解没有对象创建开销.
编辑:但如果你从外面创建对象,你需要一个工厂
是什么让纯虚拟类比pimpl成语更不可取?
我知道ruby中没有抽象类的概念.但是,如果它需要实施,那该怎么办呢?我试过像......
class A
def self.new
raise 'Doh! You are trying to write Java in Ruby!'
end
end
class B < A
...
...
end
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实例化B时,它会在内部调用A.new哪个会引发异常.
此外,模块无法实例化,但也无法继承.使新方法私有也行不通.有什么指针吗?
abstract-class ×10
inheritance ×3
interface ×3
c# ×2
java ×2
oop ×2
swift ×2
c++ ×1
class ×1
php ×1
pimpl-idiom ×1
ruby ×1
subclass ×1
syntax ×1