草庐IT

继承类上的 PHP new self() 正在创建基类对象

这个问题在这里已经有了答案:Newselfvs.newstatic(3个答案)关闭6年前。我有一个类作为基类。然后我有几个继承自它的其他类。我想使用静态语法开始加载继承的类,但这种行为没有多大意义。直到现在,我都是这样加载类的,它完成了工作。$obj=newfoo();$something=$obj->ByID(1);我希望能够像这样调用ByID函数。$something=foo::Get()->ByID(1);上面的代码是有效的,但它不是调用继承类,而是加载基类。我想我明白为什么会这样,但这没有任何意义。在.NET中,“this”将始终应用于继承的对象,但在我这里它不是这样工作的。我

php - 在 php 中将派生类转换为基类

我可能在这里遗漏了一些明显的东西,因为这是其他OOP语言中的基本功能,但我正在努力使用PHP方法来执行此操作。我知道PHP不是“真正的”OOP语言,但仍然...我要做的是将实例化为派生类的对象转换为基类。类似的东西:classSome{}classSomeMockextendsSome{}functionGetSomeMock(){$mock=newSomeMock();return(Some)$mock;//Syntaxerrorhere}我发现了一些关于将基类的对象向下转换为派生的奇怪请求的问题,这可以通过一些讨厌的调整来实现,但这个基本功能并不一定那么困难。我在这里缺少什么?编辑

java - JAXB 可以在基类中初始化值吗?

我正在处理一个Scala项目,我们想使用XML来通过JAXB(而不是Spring)初始化我们的对象。我有一个层次结构,其中更多的数据成员被添加到子类中。一个简单的例子看起来像这样:classAnimal{stringname}classCatextendsAnimal{intnumLives}classDogextendsAnimal{boolhasSpots}我希望能够从如下所示的XMLblock中初始化动物列表:Garfield9Odiefalse我们如何在类中设置注释才能处理这个问题? 最佳答案 对于此示例,您需要使用@Xml

java - Java 中的枚举基类

将其用作类枚举类的基类的最佳方法是什么。我希望能够创建不同的具体类型,而不必重新编写getter方法的代码。publicenumToolextendsItem{Pickaxe("Pickaxe",101),Saw("Saw",201);}并且Tool.getNames()将返回Tool类中所有项目名称的列表。publicenumItem{Default("Name",0);privatefinalintid;privatefinalStringname;Item(Stringname,intid){this.id=id;this.name=name;}publicintgetId(){

java - 无法编译从基类实现抽象方法的子类

在编译我定义的具有单一方法的基类的子类时遇到问题,每个子类都实现了抽象基方法,但是javac说它们没有,即使它在子类。DbModel.java(基类)packagecom.manodestra.db;importjava.sql.ResultSet;importjava.sql.SQLException;publicabstractclassDbModelextendsModel{abstractTnewInstance(ResultSetrs)throwsSQLException;}DbModel扩展了Model,它只有一个通用的toString方法。MenuPermissions.

java - 在也实现相同类的基类中使用泛型的好处

我最近在我未编写的代码中遇到过这种情况,虽然这种方法可能有一些设计上的好处,但我似乎无法从自己的大脑中挤出这种基本原理。所以在我看起来很愚蠢之前,我希望能在这里得到一些反馈。服务接口(interface)是这样的:publicinterfaceService{...}然后,一个基类添加了对Service接口(interface)的通用引用,其中T扩展了Service,但随后整个基类也实现了该接口(interface)。像这样:publicclassServiceBaseimplementsService{...}你为什么要这样做?我注意到在实践中,ServiceBase的扩展总是使用与

java - JUnit 扩展基类并在该类中运行测试

我正在使用JUnit3,并且经常遇到这样的情况:我必须测试对象是否已正确创建。我的想法是编写一个如下所示的类MyTestBase,然后针对特定情况的单元测试对其进行扩展。但是在我给出的示例中,MyTests不会运行MyTestBase中的测试。publicclassMyTestBaseextendsTestCase{protectedStringfoo;publicvoidtestFooNotNull(){assertNotNull(foo);}publicvoidtestFooValue(){assertEquals("bar",foo);}}publicclassMyTestsex

java - 使用反射从抽象基类访问构造函数

我正在玩弄Java的反射。我有一个带有构造函数的抽象类Base。abstractclassBase{publicBase(Stringfoo){//dosomemagic}}我还有一些扩展Base的类。它们不包含太多逻辑。我想用Base的构造函数实例化它们,而不必在那些派生类中编写一些代理构造函数。当然,我想用反射来实例化那些派生类。说:Classcls=SomeDerivedClass.class;Constructorconstr;constr=cls.getConstructor(newClass[]{String.class});//willreturnnullClasscls

c# - 基类与实用类

应该优先选择两者中的哪一个?A、B、C类调用了一些方法。是否应该将这些方法封装在类D(A、B和C的基础)中?或是否应该将这些方法封装在类U中,而其他类则创建它的对象以根据需要使用这些方法。应该根据什么做出决定?谢谢。 最佳答案 您应该创建一个static实用程序类。只有在真正有意义的情况下才使用继承——如果A、B和C实际上是D. 关于c#-基类与实用类,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

java - 使用基类实例在派生类中访问的 protected 成员

我在派生类中创建了基类的实例并试图访问protected成员。我可以直接访问派生类中的protected成员,而无需实例化基类。基类:packagecom.core;publicclassMyCollection{protectedIntegerintg;}同一包中的派生类-packagecom.core;publicclassMyCollection3extendsMyCollection{publicvoidtest(){MyCollectionmc=newMyCollection();mc.intg=1;//Works}}不同包中的派生类-packagesecondary;imp