C#(二十一)之派生类中的构造函数 object类

简介: 今天看下派生类中的有参数和无参数的构造函数以及object类。

QQ图片20220426141845.jpg

今天看下派生类中的有参数和无参数的构造函数以及object类:


1:无参数构造函数:


/* C#主要的运行函数,就是main函数 */
        static void Main(string[] args)
        {
            // 五参数构造函数
            C obj = new C();
            /*
             * 输出:
             * 我是A的构造函数
             * 我是B的构造函数
             * 我是C的构造函数
             * 我是C的析构函数
             * 我是B的析构函数
             * 我是A的析构函数
             */
        }
/*定义A类*/
        class A {
            private int a;
            // 构造函数
            public A()
            {
                a = 1;
                Console.WriteLine("我是A的构造函数");
            }
            // 析构函数
            ~A(){Console.WriteLine("我是A的析构函数");}
        }
        /*定义B类*/
        class B:A
        {
            private int b;
            // 构造函数
            public B()
            {
                b = 1;
                Console.WriteLine("我是B的构造函数");
            }
            // 析构函数
            ~B() { Console.WriteLine("我是B的析构函数"); }
        }
        /*定义C类*/
        class C : B
        {
            private int c;
            // 构造函数
            public C()
            {
                c = 1;
                Console.WriteLine("我是C的构造函数");
            }
            // 析构函数
            ~C() { Console.WriteLine("我是C的析构函数"); }
        }


2:有参数构造函数


/* C#主要的运行函数,就是main函数 */
        static void Main(string[] args)
        {
            // 有参数构造函数
            F fff = new F(23,34);
            /*
            * 输出:
            * 我是D34
            * 我是F23
            */
        }
        /*定义D类*/
        class D
        {
            public int d;
            // 构造函数
            public D(int d1)
            {
                d = d1;
                Console.WriteLine("我是D{0}",d);
            }
        }
        /*定义F类*/
        class F : D
        {
            public int f;
            // 构造函数
            // 派生类的构造函数除了需要给自身的构造函数传值以外,还需要给上一级传值
            // 基类中若是构造函数需要多个参数,派生类构造函数中的base也要穿多个参数
            public F(int f1,int d1):base(d1)
            {
                f = f1;
                Console.WriteLine("我是F{0}",f);
            }
        }


3:万恶之源object类:


C#中的类都会直接或者间接的继承object类:如果定义类的时候没有指定基类,那么C#默认继承object类。


QQ图片20220426141848.png

以上为object类中的虚方法。可在使用的时候重写


static void Main(string[] args)
{
     int n = 123456;
     string s = n.ToString();  // string s "123456"
     Console.WriteLine(s);
    AA aa = new AA();
    aa.a = 100;
    string old = aa.a.ToString();  //这里调用的还是object中的方法
    string news = aa.ToString();  // 这里调用的是AA中的ToString方法
}
// 重写ToString类
class AA {
     public int a;
     public override string ToString()
     {
        return "我是" + a;
     }
}


这里只是简单看了一下object类中的一点小知识。



目录
相关文章
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
404 8
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
248 7
|
9月前
|
安全 IDE Java
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
264 1
|
9月前
|
Java
课时78:Object类的基本概念
Object类的主要特点是可以解决参数的统一问题,使用object类可以接受所有的数据类型。 1. Object类简介 2. 观察Object类接收所有子类对象 3. 使用Object类接收数组
184 0
|
12月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
156 8
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
489 4
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
445 20
|
Python
类与面向对象编程(Object-Oriented Programming, OOP)
类与面向对象编程(Object-Oriented Programming, OOP)
115 1
|
C# 数据安全/隐私保护
C# 一分钟浅谈:类与对象的概念理解
【9月更文挑战第2天】本文从零开始详细介绍了C#中的类与对象概念。类作为一种自定义数据类型,定义了对象的属性和方法;对象则是类的实例,拥有独立的状态。通过具体代码示例,如定义 `Person` 类及其实例化过程,帮助读者更好地理解和应用这两个核心概念。此外,还总结了常见的问题及解决方法,为编写高质量的面向对象程序奠定基础。
218 4
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
120 0