草庐IT

派生词

全部标签

java - 禁用派生类上的继承方法

有没有办法在Java派生类中“禁用”从基类继承的方法和/或字段?例如,假设您有一个具有rotate()方法的Shape基类。您还可以从Shape类派生各种类型:Square、Circle、UpwardArrow等。Shape有一个rotate()方法。但是我不希望rotate()对Circle的用户可用,因为它没有意义,或者UpwardArrow的用户,因为我不希望UpwardArrow能够旋转。 最佳答案 我认为这是不可能的。但是,您可以通过从规范中删除rotate()方法来进一步细化Shape类,而是定义另一个名为的Shape子

java - 派生类如何调用基类的私有(private)方法?

publicclassPrivateOverride{privatevoidf(){System.out.println("privatef()");}}publicclassDerivedextendsPrivateOverride{publicvoidf(){//thismethodisneverrun.System.out.println("publicf()");}}publicstaticvoidmain(String[]args){//instantiateDerivedandassignitto//objectpooftypePrivateOverride.Private

java - 派生类如何调用基类的私有(private)方法?

publicclassPrivateOverride{privatevoidf(){System.out.println("privatef()");}}publicclassDerivedextendsPrivateOverride{publicvoidf(){//thismethodisneverrun.System.out.println("publicf()");}}publicstaticvoidmain(String[]args){//instantiateDerivedandassignitto//objectpooftypePrivateOverride.Private

c++ - 如何专门化从特定类型派生的类型的模板

我有类World管理对象的创建...创建后它调用afterCreation方法,我创建的对象是从实体派生的用户定义类型(例如.MyEntity),我想调用addEntity。我的对象是别的东西,我什么也不想做。addEntity必须使用适当的T调用,因为它会为每个派生类等生成唯一的ID。这是我的解决方案:templatestructToType{enum{value=v};};templatevoidWorld::afterCreation(T*t){afterCreation(t,ToType::value>());}templatevoidWorld::afterCreation(

c++ - 为什么我可以从派生类调用基模板类方法

我决定测试“EffectiveC++”中的示例之一,但没有得到预期的结果。所以,显然这个(简化的)代码不应该编译:templatestructA{voidf(){}};templatestructB:publicA{voidf2(){f();}//callingbasefunction-willnotcompile};这是解释(为简单起见更改了类名):Thecodeabovewon'tcompile,atleastnotwithconformantcompilers.Suchcompilerswillcomplainthatfdoesn'texist.Wecanseethatfisin

python - 来自 numpy 数组的派生类不能很好地与矩阵和掩码数组一起使用

我正在尝试对numpyndarray进行子类化,但我无法正确处理其他numpy类型(例如掩码数组或矩阵)的操作。在我看来,__array_priority__没有得到尊重。例如,我创建了一个模拟重要方面的虚拟类:importnumpyasnpclassC(np.ndarray):__array_priority__=15.0def__mul__(self,other):print("__mul__")return42def__rmul__(self,other):print("__rmul__")return42我的类和正常ndarray之间的操作按预期工作:>>>c1=C((3,3)

c# - 为什么抛出或捕获的类型必须派生自 System.Exception

出于好奇,我想看看异常类有什么特别之处,允许它与关键字Throw一起使用,而标准类则不能。我所发现的是Exception类实现了以下内容publicclassException:System.Object,System.Runtime.Serialization.ISerializable,System.Runtime.InteropServices._Exception{}所以我尝试实现那些相同的接口(interface)并尝试抛出我自己的自定义异常,该异常不是从System.Exception派生的,但无济于事。我只是被告知Thetypecaughtorthrownmustbede

python - 如何从基类中获取派生类名

我有一个基类Person和派生类Manager和Employee。现在,我想知道创建的对象是Manager还是Employee。此人如下:fromProject.CMFCore.utilsimportgetToolByNameschema=getattr(Person,'schema',Schema(())).copy()+Schema((TextField('FirstName',required=True,widget=StringWidget(label='FirstName',i18n_domain='project')),TextField('LastName',requir

java - 在派生类中省略 throws 声明

考虑以下接口(interface):publicinterfaceGenerator{Stringgenerate()throwsIOException;}和以下实现:publicclassEmptyStringGeneratorimplementsGenerator{@OverridepublicStringgenerate(){return"";}}请注意,我省略了Generator接口(interface)中指定的签名的throwsIOException部分。然而,没有编译器错误,没有编译器警告,甚至@Override注释也没有提示。我知道这是按预期工作的。但是,我想知道这背后的

c++ - 无法通过引用 std::exception 捕获从 std::exception 派生的类

我创建了一个派生自std::exception的自定义异常类。#includeclassException:std::exception{public:constchar*what()constnoexceptoverride{return"test";}};intmain(){try{throwException();}catch(std::exception&e){std::cout此程序在Ubuntu上由g++-stdc++=17编译时,导致异常未被catchblock捕获,即使按引用捕获也应该捕获派生异常。它调用std::terminate,即使它发生在通过引用捕获其基类的tr