面向对象技术的三个核心概念 : 封装,继承,多态 昨天学习了方法封装,今天就来说说第二种封装——属性封装 属性是c#引入的一种语言成分,只有很少的语言支持属性。通过对属性的读和写来保护类中的域。第一种方法体身也是一种好的方式,但用属性来实现封装会更方便。 下面有个实例:class Person2 { private string name; private int age; public string Name { set { name = value; } get { return name; } } public int Age { set { age = value; } get { return age; } } } 通过上面的例子,我们可以看到如何通过属性来实现封装。属性具有两种操作get和set。Get用来返回属性域的。Set通过value这个变量来给属性域赋。 使用属性封装的好处是可以用一条语句操作内部数据。 接下来学习的是继承 “继承”是面向对象软件技术当中的一个概念。如果一个类B继承自另一个类A,就把这个B称为"A的子类",而把A称为"B的父类"。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。 子类的声明: 子类声明:父类{子类体} 子类可以使用父类的protected和public可见的变量和方法。 C#中子类只能继承一个父类,但一个基类(父类)可以有多个直接派生类(子类)。继承是可以传递的。基类(父类)也就是父类,也叫超类,派生类(子类)则是子类。 class A {//父类 public void Sum(int i,int j) { int sum = i j; Console.WriteLine("I am A ,my sum ={0}",sum); } } class B : A {//子类 public void Minus(int i,int j) { int minus = i - j; Console.WriteLine("I am B ,my minus ={0}", minus); this.Sum(3, 4); } } class Test1 { static void Main(string[] args) { B b = new B(); b.Minus(3, 4); Console.Read(); } }结果:I am B ,my minus=-1 I am A ,my sum = 7 当基类(父类)Sum()方法是私有时,派生类(子类)还会继承该方法吗?经过测试,没有在B类找到该方法,那么是不是它就没有被继承呢?其实不是的,私有成员其实已经被继承了,但是它们却不可以被访问,因为私有成员只能被声明它们的类或结构体中才可访问,所以看上去像是没有被继承。 能够阻止某个类被其他类继承吗?答案是可以的,C#提供了一个sealed 修饰符,此修饰符会阻止其他类从该类继承。 sealed class A { int test; public void Sum(int i,int j) { int sum = i j; Console.WriteLine("I am A ,my sum ={0}",sum); } } class B : A { public void Minus(int i,int j) { int minus = i - j; Console.WriteLine("I am B ,my minus ={0}", minus); this.Sum(3, 4); //编译器会报错 } } 派生类(子类)(子类)隐式获得基类(父类)的除构造函数和析构函数以外的所有成员。 当基类(父类)没有构造函数,派生类(子类)也没有构造函数时,派生类(子类)新曾成员的初始化工作由其他公有函数来完成。 如果只有派生类(子类)定义构造函数时,只需构造派生类(子类)对象即可。对象的基类(父类)部分使用默认构造函数来自动创建。 当基类(父类)和派生类(子类)都定义有构造函数时,那么执行顺序会怎样呢? 如果基类(父类)中是没有参数的构造函数,那么他可以隐式的被派生类(子类)执行,也就是说,派生类(子类)根本不需要包含构造函数如果基类(父类)中是没有参数的构造函数,在派生类(子类)中可以自定义有参数的构造函数 如果基类定义了带有参数的构造函数,那么此构造函数必须被执行,且在派生类中实现该构造函数,此时我们可以使用base关键字。 如果派生类的基类也是派生类,则每个派生类只需负责其直接基类的构造,不负责间接基类的构造,并且其执行构造函数的顺序是从最上面的基类开始的,直到最后一个派生类结束。 更多精彩请关注:
推荐整理分享unity3d---属性封装和继承(unity dem),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:unity 属性注入,unity封装,unity 属性,unity封装,unity模型属性,unity封面,unity模型属性,unity 属性,内容如对您有帮助,希望把文章链接给更多的朋友!
unity游戏开发之自定义事件测试demo 上文中写了unity游戏开发自定义消息事件点击打开链接下面是测试demo第一,打卡unity,新建一个场景,然后新建一个空的游戏对象,如图中的EventObj第二
unity之声音播放
抽象类和接口 今天我复习了一下抽象类和接口.1.抽象类的概念在C#中使用关键字abstract来定义抽象类和抽象方法。不能初始化的类被叫做抽象类,它们只提供部分实现