在下面的代码中,我收到编译错误 Error Too many arguments to 'Public Sub New()' Dim TestChild As ChildClass = New ChildClass("c") 。 我在TestChild.Method1()上没有收到它,即使它们都在我inheritance的基类上。 Public Class BaseClass Public ReadOnly Text As String Public Sub New(ByVal SetText As String) Text = SetText End Sub Public Sub New() Text = "" End Sub End Class Public Class ChildClass Inherits BaseClass End Class Public […]
我试图整合一个第三方Django的应用程序,使不幸的决定从django.contrib.auth.models.Userinheritance,这是一个可插拔的应用程序的大禁忌。 引用Malcolm Tredinnick : 更重要的是,虽然,就像在Python中一样,用Django的模型inheritance也不能“倒置”。 也就是说,如果你已经创build了User实例,那么你不能在下面探索一下,使得这个实例对应于你尚未创build的子类实例。 那么,我需要将这个第三方应用程序与我现有的用户实例集成在一起。 所以,如果假设我真的愿意在封面上捅一下,我有什么select? 我知道这是行不通的: extended_user = ExtendedUser(user_ptr_id=auth_user.pk) extended_user.save() 有没有例外,但它打破了各种各样的东西,首先用空string覆盖django.contrib.auth.models.User所有列…
public class MyGeneric<T, E> {} public class Extend1<T, E> extends MyGeneric<T, E> {} public class Extend2 extends MyGeneric<String, Object> {} 据我所知,上例中的两个子类都是有效的。 我想知道Java是如何知道什么时候在超类中给出的types将在子类被实例化的时候被定义,以及当它们是实际的类名时(即它如何知道T,E不是类名)? 一个侧面说明,是否允许(即使不常见)使用多个字母的genericstypes? 如果(通过一些严重的计划错误)如果types与现有的类相冲突,例如 public class E{} public class Foo<E>{} 那么会发生什么? 编辑:谢谢你这么及时回答。 为了回答我的第一个问题, Joachim的答案是最有效的。 为了回答这个问题, aioobe的答案更为清晰
在处理模板的时候,我遇到了一个需要,即为了创build对象而从inheritance类访问基类构造函数,以减less复制/粘贴操作。 我想通过using关键字以相同的方式与function的情况下做到这一点,但这是行不通的。 class A { public: A(int val) {} }; class B : public A { }; class C : public A { public: C(const string &val) {} }; class D : public A { public: D(const string &val) {} using A::A; // g++ error: A::A names constructor }; void main() { B b(10); // […]
我有一个常见的程序集/项目有一个抽象的基类,然后我想公开其他程序集的几个派生类。 我不想让抽象基类在Intellisense中的其他程序集中出现,所以我想我会把它放在internal ,但是我得到这个错误: 不一致的可访问性:基类“设置”比类“IrcSettings”更难以访问…. 我真的不明白这一点。 我不得不使抽象的Settings类public ,因此在这个程序集之外是可见的。 我怎样才能让这个classinternal呢?
我想要做这样的事情: List<Child> childList = new List<Child>(); … List<Parent> parentList = childList; 然而,因为parentList是一个儿童的祖先列表 ,而不是一个直接的祖先,我无法做到这一点。 有没有解决方法(除了单独添加每个元素)?
我有一个Processor类,将做两个完全不同的事情,但从通用代码(“控制反转”情况)调用。 我想知道什么样的devise考虑因素,在决定它们是否应该全部从BaseProcessorinheritance,或者实现IP Processor作为接口时,我应该认识到(或认识到,对于你的USsers)。
编辑 :底部的评论。 另外, 这个 。 这是什么让我困惑。 我的理解是,如果我有这样的枚举… enum Animal { Dog, Cat } …我基本上做了什么是定义了一个值types称为Animal与两个定义值, Dog和Cat 。 这种types派生自引用types System.Enum (通常情况下,值types通常不会这样做 – 至less在C#中是不允许的,但在这种情况下允许这样做),并且具有用于来回转换int值的工具。 如果我刚刚描述的枚举types的方式是真实的,那么我期望下面的代码抛出一个InvalidCastException : public class Program { public static void Main(string[] args) { // Box it. object animal = Animal.Dog; // Unbox it. How are these both successful? int i = (int)animal; Enum e = […]
对于一个对象,我可以使用reflection来获得它的所有子类吗?
出于某种原因, super()方法并不总是按预期行事,select返回: TypeError('super(type, obj): obj must be an instance or subtype of type)' 我明白错误的含义 。 我不明白为什么它会出现错误。 以下是正在破解的代码片段。 系统中的所有对象都是新的样式对象。 真正有趣的是这个错误并不总是显示出来。 我不知道是什么原因造成的。 Retrieval的super()方法传递Retrieval类,然后将其本身作为一个对象,就我所知,它应该是如何调用super() 。 任何想法呢? 在文件DBConnection.py中 : class DBAdminConnection(object): def __init__(self): self.user = DBUserConnection().user self.submissions = DBSubmissionConnection() 在文件Retrieval.py中 class Retrieval(DBConnection.DBAdminConnection): def __init__(self, username=None, password=None, unique_key=None): super(Retrieval,self).__init__() if username and password: self.username = username self.user.login(username,password, config.DATABASE) if self.user.error: […]