c#基础

2019-11-24  本文已影响0人  李药师_hablee

继承

当在主函数中new了一个子类的对象时,子类对象的初始化会先调用父类的无参构造方法,再调用子类的当前构造方法。

using System;

namespace ConsoleApp6
{
    class animal
    {
        public animal()
        {
            Console.WriteLine("animal无参构造函数");
        }
        public animal(string str)
        {
            Console.WriteLine("animal带参构造函数");
        }

    }
    //继承
    class Dog:animal
    {
        public Dog()
        {
            Console.WriteLine("Dog无参构造函数");
        }
        public Dog(string str)
        {
            Console.WriteLine("Dog带参构造函数");
        }
    }
}

<img src="C:\Users\Hab_L\Desktop\1.JPG" alt="无参数对象" style="zoom:80%;" />

<img src="C:\Users\Hab_L\Desktop\2.JPG" alt="2" style="zoom:80%;" />

所有如果在父类中如果定义了带参数的构造方法,必须定义一个无参构造方法(即使方法体为空),否则子类对象数据在初始化时,调用父类的无参构造方法会出错。

using System;

namespace ConsoleApp6
{
    class animal
    {
        /*public animal()
        {
            Console.WriteLine("animal无参构造函数");
        }*/
        public animal(string str)
        {
            Console.WriteLine("animal带参构造函数");
        }

    }
    //继承
    class Dog:animal
    {
        public Dog()
        {
            Console.WriteLine("Dog无参构造函数");
        }
        public Dog(string str)
        {
            Console.WriteLine("Dog带参构造函数");
        }
    }
}

当我注释了父类无参构造函数之后,程序立马报错。

<img src="C:\Users\Hab_L\Desktop\3.JPG" alt="3" style="zoom:80%;" />

多态

static void Main(string[] args)
        {
            animal a1 = new Dog("d");
            a1.say()//这里就只能调用animal的say方法
        }

静态static

抽象类

接口

枚举

标识枚举:让二进制中的某一位为1,剩下的都为0

[Flags]
public enum Layer
{
    default1 = 1<<0,
    red = 1<<1,
    blue = 1<<2,
    green = 1<<3
        //左移表示×2的n次方
}
上一篇 下一篇

猜你喜欢

热点阅读