[Unity&C#&继承]如何新增新的对象在已经继承的子类中
来源:互联网 发布:淘宝3c数码类目包括 编辑:程序博客网 时间:2024/05/16 19:18
A.cs为父类,B.cs为 A 的子类。B : A{}
实际上 ,可以理解 为 把 A 的 公共 成员 的函数,对象,变量,全部 复制 给了 B.cs
在上一篇文章 参考资料1 里面,测试了一些 子类 继承 父类,改变 父类 的函数 里面的 内容 会发生什么情况。
本文就 探究,父类 A.cs 的 公共class test_class_A 与 子类 继承的关系有什么影响。
using UnityEngine;
public class A : MonoBehaviour
{
public class test_class_A
{
public int test_1;
}
}
----------------------------------------------------------------------------------------------------------------
1.1
和 上一篇文章 参考资料 1 里面 的结论一样,子类 覆盖了父类 的函数。
----------------------------------------------------------------------------------------------------------------
有3个 脚本 A.cs B.cs C.cs
A.cs是父类,B.cs继承A.cs,B是A的子类。
C使用代码 来调用B 的函数,使其 全部显示。
如何在 已经从父类那里继承过来的 子类 中,添加 新的对象。
B.cs继承A.cs,怎么在 B.cs 的内部类 中 新增 新 的 变量。(这种技巧在JSON 数据使用中很常见。)
实际的例子,A.cs = Test_Father
B.cs = Test_Son
C.cs = Test_FSChange
A.cs = Test_Father
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test_Father : MonoBehaviour{ public void test_father() { //int test_father_int = 666; //Debug.Log(" test_father string :" + str_1); } public class test_f_1 { public string str_1 = "string_1"; public string str_2 = "string_2"; public void test_f_function() { Debug.Log(" test_father str_1:" + str_1+ " test_father str_2:" + str_2); } }}
B.cs = Test_Son
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test_Son : Test_Father { //public test_f_1 tf_1; /* public class test_f_1 { public string str_3 = "string_3"; }*/ public void test_s_function() { test_f_1 tf1 = new test_f_1(); string str_1 = tf1.str_1; string str_2 = tf1.str_2; string str_3 = "string3"; string str_4 = "string4"; tf1.test_f_function(); Debug.Log( " str_1: " + tf1.str_1+ " str_2: " + tf1.str_2 + " str_3: " + str_3+ " str_4: " + str_4); }}
C.cs = Test_FSChange
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test_FSChange : MonoBehaviour { private Test_Son ts;// Use this for initializationvoid Start () { Test_Son ts = new Test_Son(); ts.test_s_function(); }}------------------------逻辑结果图
-------------------------------------
那么把结果换成 子类 的内部类 继承 父类的内部类 并 新增 新的 变量
A.cs = Test_Father
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test_Father : MonoBehaviour{ public void test_father() { //int test_father_int = 666; //Debug.Log(" test_father string :" + str_1); } public class test_father_1 { public string str_1 = "string_1"; public string str_2 = "string_2"; public void test_f_function() { Debug.Log(" test_father str_1:" + str_1+ " test_father str_2:" + str_2); } }}
B.cs = Test_Son
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test_Son : Test_Father { //public test_f_1 tf_1; /* public class test_f_1 { public string str_3 = "string_3"; }*/ public class test_son_1 : test_father_1 { public test_father_1 tf1 = new test_father_1(); //string str_1 = tf1.str_1; //string str_2 = tf1.str_2; public string str_3 = "string3"; public string str_4 = "string4"; //tf1.test_f_function(); /* Debug.Log( " str_1: " + //tf1.str_1 + " str_2: " + //tf1.str_2 + " str_3: " + str_3+ " str_4: " + str_4);*/ }}C.cs = Test_FSChange
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test_FSChange : Test_Son { private Test_Son TS; private test_son_1 ts1;// Use this for initializationvoid Start () { ts1 = new test_son_1(); // test Debug.Log( " str_1: " + ts1.str_1 + " str_2: " + ts1.str_2 + " str_3: " + ts1.str_3 + " str_4: " + ts1.str_4); }}------------------------逻辑结果图
子类 怎么才能继承 父类 的内部类的变量,然后新增新的变量
A.cs 有个 内部类 class a,class a 有 2个 string 变量 str_1 = "string_1"; string 变量 str_2 = "string_2";
B.cs 是 A.cs 的子类,B.cs 的内部类 class b : class a{},并在 class b 中 新增 2个 string 变量 str_3 = "string_3"; string 变量 str_4 = "string_4";
在C.cs : B.cs ,在C.cs中 显示 B.cs 的 class b 的 4个 string 类型 变量。
(A.cs = Test_Father) : (MonoBehaviour)
{
(class a = test_father_1)
}
(B.cs = Test_Son) : (A.cs = Test_Father)
{
(class b = test_son_1) : (class a = test_father_1)
}
(C.cs = Test_FSChange) : (B.cs = Test_Son)
只有 一个类 继承 另 一个 class newClass ,才能 使用 newClass nc = newClass();
结论:子类的内部类 继承(父类的内部类)并添加 新的变量 的时候,需要在 子类的内部类 中 新建一个 新的 (父类的内部类)变量 即可。
结合逻辑结果图查看
(B.cs = Test_Son) : (A.cs = Test_Father)
{
(class b = test_son_1) : (class a = test_father_1)
//新增变量
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
参考资料:
1.
[Unity&C#&继承]unity怎么改变继承子类的父类的函数
2.内部类——内部类的继承
3.
4.
5.
6.
7.
- [Unity&C#&继承]如何新增新的对象在已经继承的子类中
- [Unity&C#&继承]unity怎么改变继承子类的父类的函数
- 《C++面向对象》在C++中子类继承和调用父类的构造函数方法
- java继承中new子类对象的执行顺序
- 在C 中子类继承和调用父类的构造函数方法
- 在c中如何实现继承的效果
- 子类的继承
- 子类的继承性
- [Unity&继承&序列化&JSON]在JSON数据中,子类继承父类问题
- Java中子类的继承性
- 关于Qt如何在子类中继承祖父类
- 重写——上转型对象不能操作子类新增成员变量和方法但可以操作子类继承和重写的方法
- 在继承中,父类的私有也会被继承,但是子类不可以直接访问,但是可以间接的访问
- 如何在C#中实现继承?
- C++子类继承父类后子类的大小
- 继承--关于子类对象中包含父类内容的随笔
- c++ 继承子类的sizeof
- 多文件的子类继承
- 浅谈游戏服务器一二三
- 微信小程序37
- ofo 共享单车链接
- iOS9 Universal Links (通用链接)
- svm
- [Unity&C#&继承]如何新增新的对象在已经继承的子类中
- quilt的常用使用命令解释
- 关于java中Lambda表达式的使用(粗解)
- CSS 在线编辑器
- H5 21
- JavaScript 闭包
- bzoj2152 聪聪可可
- oracle 表数据 导入导出.DMP文件 及 常见问题
- 砝码称重问题