<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="/feed.php">
        <title>Documentation Center public:software:dazstudio:4:referenceguide:scripting:language_reference:inheritance</title>
        <description></description>
        <link>/</link>
        <image rdf:resource="/lib/tpl/dazdoccenter/images/favicon.ico" />
       <dc:date>2026-04-14T02:07:31+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="/public/software/dazstudio/4/referenceguide/scripting/language_reference/inheritance/start"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="/lib/tpl/dazdoccenter/images/favicon.ico">
        <title>Documentation Center</title>
        <link>/</link>
        <url>/lib/tpl/dazdoccenter/images/favicon.ico</url>
    </image>
    <item rdf:about="/public/software/dazstudio/4/referenceguide/scripting/language_reference/inheritance/start">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-18T04:32:24+00:00</dc:date>
        <title>Inheritance</title>
        <link>/public/software/dazstudio/4/referenceguide/scripting/language_reference/inheritance/start</link>
        <description>
&lt;h1 id=&quot;inheritance&quot;&gt;Inheritance&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Inheritance is a term used to describe the hierarchical relationship between classes and their derived subclasses. Subclasses inherit functions (methods) and properties from their respective parent class (superclass). Subclasses also provide their own specialized behaviors and/or properties not provided by the superclass. Using inheritance, developers can write the code once and reuse it many times.
&lt;/p&gt;

&lt;p&gt;
Derivation is a way to express the “is-a” relationship of two classes, meaning if you can use “is-a” in a statement about two classes, and that statement is considered to be true, then it makes sense for the first to be a subclass of the second (e.g. An Apple is-a Fruit, A Terrier is-a Dog, A Dog is-a Mammal).
&lt;/p&gt;

&lt;p&gt;
In &lt;abbr title=&quot;Digital Art Zone&quot;&gt;DAZ&lt;/abbr&gt; Studio, one of the most common objects users interact with are nodes. Nodes come in several forms, but they all have one thing in common… they are all, at the very least, nodes. That being the case, we can generalize operations and/or properties of nodes in a single class, &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt;. From there we can become more specific, differentiating between what a camera might do as opposed to say a bone or skeleton. Using the “is-a” statement as mentioned above, we can feel comfort in knowing that the statement, &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:camera_dz&quot;&gt;DzCamera&lt;/a&gt; is-a &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt;, is true. Likewise, &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/bone_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:bone_dz&quot;&gt;DzBone&lt;/a&gt; is-a &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt; and &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/skeleton_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:skeleton_dz&quot;&gt;DzSkeleton&lt;/a&gt; is-a &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt; are also true, thus &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:camera_dz&quot;&gt;DzCamera&lt;/a&gt;|&lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/bone_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:bone_dz&quot;&gt;DzBone&lt;/a&gt;|&lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/skeleton_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:skeleton_dz&quot;&gt;DzSkeleton&lt;/a&gt; make sense as subclasses of &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/object_q&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:object_q&quot;&gt;QObject&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/base_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:base_dz&quot;&gt;DzBase&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/element_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:element_dz&quot;&gt;DzElement&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level4 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/skeleton_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:skeleton_dz&quot;&gt;DzSkeleton&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/bone_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:bone_dz&quot;&gt;DzBone&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:camera_dz&quot;&gt;DzCamera&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level6 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/light_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:light_dz&quot;&gt;DzLight&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level7 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/distantlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:distantlight_dz&quot;&gt;DzDistantLight&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level8&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/pointlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:pointlight_dz&quot;&gt;DzPointLight&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level8&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/spotlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:spotlight_dz&quot;&gt;DzSpotLight&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Looking at the inheritance tree above, you can see the hierarchical relationship of several classes. We can see that &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/spotlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:spotlight_dz&quot;&gt;DzSpotLight&lt;/a&gt; inherits from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/distantlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:distantlight_dz&quot;&gt;DzDistantLight&lt;/a&gt;, &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/distantlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:distantlight_dz&quot;&gt;DzDistantLight&lt;/a&gt; inherits from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/light_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:light_dz&quot;&gt;DzLight&lt;/a&gt;, &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/light_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:light_dz&quot;&gt;DzLight&lt;/a&gt; inherits from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:camera_dz&quot;&gt;DzCamera&lt;/a&gt; and &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:camera_dz&quot;&gt;DzCamera&lt;/a&gt; inherits from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt; (and &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/node_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:node_dz&quot;&gt;DzNode&lt;/a&gt; from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/element_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:element_dz&quot;&gt;DzElement&lt;/a&gt;, &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/element_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:element_dz&quot;&gt;DzElement&lt;/a&gt; from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/base_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:base_dz&quot;&gt;DzBase&lt;/a&gt; and &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/base_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:base_dz&quot;&gt;DzBase&lt;/a&gt; from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/object_q&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:object_q&quot;&gt;QObject&lt;/a&gt;). What this means to you, the script developer, is that each instantiated subclass has all of its own methods and properties, but it also has access to the methods and properties of its parent class, and its grandparent class… and so on.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s important to point out, given the class hierarchy depicted above, that subclasses can override inherited methods and provide a specialized implementation for those behaviors. For example, lets examine &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/pointlight_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:pointlight_dz&quot;&gt;DzPointLight&lt;/a&gt;. We see above that &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/light_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:light_dz&quot;&gt;DzLight&lt;/a&gt; inherits from &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:camera_dz&quot;&gt;DzCamera&lt;/a&gt;. This is so lights can be viewed through, in the user interface. For directional lights this makes sense, but for a point light - which emits light in all directions - there is no single direction that makes sense to view from, so the behaviors that allow lights to be viewed from are overridden.
&lt;/p&gt;

&lt;p&gt;
In the tree above, we see that &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/object_q&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:object_index:object_q&quot;&gt;QObject&lt;/a&gt; is at the top of the tree. With the exception of the &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/intrinsic_types/ecmascript_qtscript_native_objects&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:intrinsic_types:ecmascript_qtscript_native_objects&quot;&gt;ECMAScript/QtScript - Native Objects&lt;/a&gt;, this is true of all &lt;a href=&quot;/public/software/dazstudio/4/referenceguide/scripting/api_reference/intrinsic_types/start&quot; class=&quot;wikilink1&quot; title=&quot;public:software:dazstudio:4:referenceguide:scripting:api_reference:intrinsic_types:start&quot;&gt;Intrinsic Types (Modules)&lt;/a&gt; in DAZScript - they must in order to be exposed to scripting.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
</rdf:RDF>
