Tag: inheritance

虚拟析构函数是inheritance的吗?

如果我有一个虚拟析构函数的基类。 有一个派生类来声明一个虚拟析构函数吗? class base { public: virtual ~base () {} }; class derived : base { public: virtual ~derived () {} // 1) ~derived () {} // 2) }; 具体问题: 是1)和2)是一样的吗? 是2)自动虚拟,因为它的基础或是它“停止”虚拟? 如果没有任何关系,派生的析构函数可以省略吗? 声明派生析构函数的最佳做法是什么? 声明它是虚拟的,非虚拟的或者如果可能的话省略它?

inheritance:“A”是一个不可访问的“B”

$ cat inheritance.cpp #include <iostream> using namespace std; class A { }; class B : private A { }; int main() { A* ab = new B; } $ $ g++ inheritance.cpp inheritance.cpp: In function 'int main()': inheritance.cpp:9: error: 'A' is an inaccessible base of 'B' $ 我只是不明白这个错误。 据我所知,正如本教程所证实的那样, privateinheritance只应该改变class B的成员对于外部世界的可见性。 我认为私人指定者不仅仅是在这里改变class B成员的知名度。 我得到这个错误是什么,这是什么意思? 基本上在C […]

重写类常量与属性

我想更好地理解为什么在下面的场景中,inheritance类常量和实例variables的方式有所不同。 <?php class ParentClass { const TEST = "ONE"; protected $test = "ONE"; public function showTest(){ echo self::TEST; echo $this->test; } } class ChildClass extends ParentClass { const TEST = "TWO"; protected $test = "TWO"; public function myTest(){ echo self::TEST; echo $this->test; } } $child = new ChildClass(); $child->myTest(); $child->showTest(); 输出: TWO TWO ONE TWO […]

base()和this()构造函数的最佳实践

在什么条件下,我应该做:base()和:this()构造函数调用遵循我的构造函数的括号(甚至在代码中的其他地方)。 什么时候这些被称为良好做法,什么时候是强制性的?

在父类中获取子类的名称(静态上下文)

我正在构build一个重用和简单的ORM库; 除了被一个愚蠢的inheritance限制所困住之外,一切都很好。 请考虑下面的代码: class BaseModel { /* * Return an instance of a Model from the database. */ static public function get (/* varargs */) { // 1. Notice we want an instance of User $class = get_class(parent); // value: bool(false) $class = get_class(self); // value: bool(false) $class = get_class(); // value: string(9) "BaseModel" $class […]

Mixin与inheritance

混合和inheritance有什么区别?

Backbone.js多个模型子类的集合

我有一个REST Json API返回一个列表“日志”。 有许多types的日志实现不同但相似的行为。 数据库层的服务器端实现是一种单表inheritance,所以日志的每个JSON表示都包含它的“types”: [ {"type": "ULM", "name": "My uml logbook", … , specific_uml_logbook_attr: …}, {"type": "Plane", "name": "My plane logbook", … , specific_plane_logbook_attr: …} ] 我想在客户端复制这个服务器模型,所以我有一个基本的Logbook类和多个日志子类: class Logbook extends Backbone.Model class UmlLogbook extends Logbook class PlaneLogbook extends Logbook … 我的Backbone.Collection是一组用于查询JSON API的Logbook模型: class LogbookCollection extends Backbone.Collection model: Logbook url: "/api/logbooks" 当我获取日志集合,是否有办法将每个Logbook转换为其相应的子类(基于JSON“type”属性)?

有没有像在Java中的注释inheritance?

我正在探索注释,并且发现一些注释似乎在其中有层次结构。 我使用注释在卡片的背景中生成代码。 有不同的卡片types(因此不同的代码和注释),但是它们之间有一些常见的元素,如名称。 @Target(value = {ElementType.TYPE}) public @interface Move extends Page{ String method1(); String method2(); } 这将是常见的注释: @Target(value = {ElementType.TYPE}) public @interface Page{ String method3(); } 在上面的例子中,我期望移动inheritance方法3,但我得到一个警告,说延伸是无效的注释。 我试图让一个注释扩展一个共同的基础之一,但这是行不通的。 这是甚至可能或只是一个devise问题?

inheritancePython类inheritance中的文档string

我想在Python中做一些类inheritance。 我希望每个类和inheritance类有良好的文档。 所以我认为对于inheritance的类,我希望它: inheritance基类docstring 还附加相关的额外文档的文档string 在类inheritance的情况下做这种文档string操作有没有一些“最佳做法”? 如何多重inheritance? 这个地方有什么好的讨论/教程吗?

默认方法返回true一段时间,然后返回false? (可能的JVM错误)

我有一个下面的代码问题,我把它分离到最封闭的forms,我正在使用Java 8,几乎准备好发布(2014年3月18日),所以我期望在实现本身没有严重的问题,所以它可能/必须是我自己的代码: 注意:代码是用Java 8编写的,它具有各种新特性,包括接口中default方法实现。 public abstract class Drawable implements DrawableInterface { } interface DrawableInterface { default public boolean isShadowReceiver() { return false; } default public boolean isShadowCaster() { return false; } } public interface ShadowDrawable extends DrawableInterface { @Override default public boolean isShadowReceiver() { return true; } @Override default public boolean isShadowCaster() { return true; […]