c# 对象 & 类

2021-07-27 21:55

阅读:610

标签:cin   intern   wim   atm   不能被继承   abstract   sea   xpl   log   类定义中可以使用的访问修饰符组合 none or internal 类只能在当前工程中访问 public 类可以在任何地方访问 abstract or internal abstract 类只能在当前工程中访问,不能实例化,只能继承 public abstract 类可以在任何地方访问,不能实例化,只能继承 sealed or internal sealed 类只能在当前工程中访问,不能派生,只能实例化 public sealed 类可以在任何地方访问,不能派生,只能实例化   构造函数 其名称同类名,没有返回值,也不需要void ,在new的时候调用。 所有的类都有构造函数,只不过C#会默认一个无参数的构造函数,如果不定义,则使用默认。 如果定义了构造函数,则默认失效。   嵌套类    C#允许使用类嵌套      嵌套类型被视为是外层类型的成员,因此嵌套类型可以访问外层类型中的所有其他成员。      根据类的成员默认访问修饰符为:private的原则,嵌套类默认访问修饰符为private      嵌套类型可以自由访问外层类型的成员,而不在乎那些成员是否私有。外层类型如果想访问嵌套类型,则要受到访问规则的限制。      关于嵌套类的继承(后面会详细说明继承),如果一个类型继承了一个包含嵌套类型的类型,那么它也会自然的继承基类型中的嵌套类型,因为那个嵌套类型本身就是基类型的一个成员。因此只要那个嵌套类型不是private或者天生不能被继承的,子类型中新声明的嵌套类型还可以继承那个嵌套类型。   析构函数 不能在结构中定义析构函数。 只能对类使用析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数。 它们是被自动调用的。 析构函数既没有修饰符,也没有参数。 一. 析构函数的特征: 析构函数只能存在于类中,而不能存在于结构中;析构函数不能有任何修饰符,包括访问控制修饰符,静态修饰符,抽象修饰符,虚拟修饰符等都不能有;析构函数没有参数,这就意味着不能有任何重载。 二. 析构函数的调用时机: 析构函数会在对象被垃圾收集器回收时调用,但垃圾收集器有个特点,它是懒惰的, 它并不会在变量出了作用域和生命期后立即回收,而是在它认为适当的时候才回收,一般是内存紧张的时候。   例子: class Car { ~Car() // destructor { // cleanup statements... } }   对象的消亡 对象超出作用范围 消亡 对象 引用手动赋值 null 消亡   类的继承 继承是面向对象编程的一个重要特性。任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所有成员。在OOP 中,被继承的类称为父类(也称为基类)。注意,C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。 类的继承一个重要作用是子类可重用父类的代码。这样就可以在一个地方集中维护一份代码,避免了很多的重复的代码。 c#只支持单继承   继承语法 : class ModelACar : Car 重构 比如现在我有两个类,一个是Cat,另一个是Dog,他们都有叫方法,如果我每个类都去写实现叫方法,就造成了代码的重复,怎么办那,可以把叫方法抽象出来,放到一个父类Animal中,让子类Cat、Dog去继承   【重写】        多出现在多态里,父类里写一个virtual方法或abstract方法,子类通过override重写去实现父类的方法 1.重写父类的方法要用到override关键字(具有override关键字修饰的方法是对父类中同名方法的新实现)      2.要重写父类的方法,前提是父类中该要被重写的方法必须声明为virtual或者是abstract类型。给父类中要被重写的方法添加virtual关键字表示可以在子类中重写它的实现。(注意:C#中的方法默认并不是 virtual类型的,因此要添加virtual关键字才能够被重写) 3.virtual关键字用于将方法定义为支持多态,有virtual关键字修饰的方法称为“虚拟方法” class Animal { public virtual void GetShoutSound() { } } class Cat:Animal { public override void GetShoutSound() { Console.WriteLine("猫的叫声为:喵"); } } class Dog : Animal { public override void GetShoutSound() { Console.WriteLine("狗的叫声为:"); } }                      c# 对象 & 类标签:cin   intern   wim   atm   不能被继承   abstract   sea   xpl   log   原文地址:http://www.cnblogs.com/gwyy/p/8028879.html


评论


亲,登录后才可以留言!