C#接口和抽象类

接口

 

接口表现为:1 区别能力  2  规范写作

我认为接口是一种规范需求代码的编译方式,接口的存在类似于你的电脑当中的USB,给予相关功能的规范力。

特征:

1:接口不能被实例化。

2:接口中的方法都没有方法体,是用于后续实现这些方法而存在的。

3:接口中系统默认方法为Public(公开)   abstract(抽象类)。

4:没有方法体的方法是需要类去实现的。

5:接口中可以有属性,常量,索引器,不能有字段

//例如

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    interface USB
    {
       
        public int Age { get; set; }

        static double PI = 3.14;

        void ChaFengShan();
        void ChaShouJi();
    }
}

接口继承之后

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class FengShan : USB
    {
        public int Age { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

        public void ChaFengShan()
        {
            Console.WriteLine("起风了");
        }

        public void ChaShouJi()
        {
            Console.WriteLine("来电话了");
        }
    }
}

方法在接口之后在子类中实例化,定义属性的变量也只能在子类中实现。

继承

继承:一个类具有另一个类的属性和方法,这个类叫子类(派生类 ,超类)

继承的关键符号为 :(冒号)

class Father

    {

        public string nose = "大鼻子";

        public void Smoking()

        {

            Console.WriteLine("烟鬼");

        }

public Father()

        {

            Console.WriteLine("我是父类");

}

}

class Son:Father

    {

        void Get()

        {

            Console.WriteLine(nose);

            Smoking();



     Console.WriteLine(base.nose);

        base.Smoking();

        }


public Son(): base()//调用父类构造方法
        {
            Console.WriteLine("我是子类");
        }
}

特征:

    1、子类继承了父类的属性和方法(public、protected),但是构造方法不能被继承

    2、子类使用构造方法调用父类构造方法用 base()

    3、创建子类对象时,系统默认先调用父类构造方法,然后再调用子类构造方法

4、子类使用父类的属性和方法用  base 关键字(public、protected)

注意:

当父类有有参构造方法时,如果子类有构造方法(无参或有参),要求父类必须有一个无参构造方法。

如果子类没有构造方法,父类也需要提供一个无参构造方法。

如果不提供,子类构造方法会报错!

重写(override)

重写:在子类和父类中,子类中的方法名称和父类方法名称相同,参数相同

重载(overload):在同一个类中,方法名称相同,参数不同(个数、类型),与返回值无关

public virtual void Eat()//虚方法

        {

            Console.WriteLine("吃白萝卜");

        }

public override void Eat()//重写方法

        {

            Console.WriteLine("吃肉");

        }

访问权限

public(本类、外部类) private(本类) protected(本类 子类)    internal(本类 子类)

虚方法:virtual

在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员方法称为虚方法。

虚方法的作用就是实现多态性(Polymorphism),多态性是将接口与实现进行分离。

在基类的函数中声明关键字virtual,就可以在其派生类中通过关键字override重写该方法。重写后的virtual方法依旧是virtual方法。

当有一个定义在类中的方法需要在继承类中实现时,可以使用虚方法。

Sealed关键字

C#提供了一个Sealed关键字。此修饰符会阻止其他类从该类继承

集合

ArrayList

List

//案例

 

List<Student>lsit=new List<Student>();

list.add(new Student(“Tom”, 18, 100, “class05”));

list.add(new Student(“Jerry”, 22, 70, “class04”));

list.add(new Student(“Owen”, 25, 90, “class05”));

list.add(new Student(“Jim”, 30,80 , “class05”));

list.add(new Student(“Steve”, 28, 66, “class06”));

list.add(new Student(“Kevin”, 24, 100, “class04”));

可以用存入链表当中读取使用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值