C#编程基础(中级)(四)——抽象类,密封类和密封方法,派生类的构造方法,访问修饰符,定义和实现接口

1.抽象类

抽象类与抽象函数需要声明为abstract
抽象类不能实例化(类是一个模板,抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象,但可以声明对象),可以包含普通函数和抽象函数。
抽象函数只有函数定义没有函数体

注意:
一个类中如果有了抽象函数,这个类就要加上abstract变为抽象类。
继承了抽象类的类必须去实现抽象方法,要用override关键字

2.密封类和密封方法

密封类
在类前加上sealed关键字

密封方法
只能密封重写的方法有override关键字),即只能在子类中将方法密封

3.派生类的构造方法
  1. 调用无参数的构造方法
    在子类中调用父类的默认构造方法(无参),会先调用父类的,再调用子类的
    例如:
class BigGod
{
    public BigGod()
    {
        Console.WriteLine("This is BigGod");
    }
}

class SmallGod:BigGod
{
    public SmallGod():base()//显示声明调用父类的构造方法
    {
        Console.WriteLine("This is SmallGod");
    }
}


class Program
{
    static void Main(string[] args)
    {
		SmallGod god = new SmallGod();
    }
}

输出为
在这里插入图片描述

注意:
当没有在子类的构造方法中显示声明调用父类的构造方法,默认会调用父类中的无参构造方法

  1. 调用有参数的构造方法
    同样是先调用父类的构造方法,再调用子类的构造方法。在显示声明调用父类的构造方法时传参
    例如:
class BigGod
{
    public int x;
    public BigGod(int x)
    {
        this.x = x;
        Console.WriteLine("This is BigGod"+' '+this.x);
    }
}

class SmallGod:BigGod
{
    public int y;
    public SmallGod(int y,int x):base(x)
    {
        this.y = y;
        Console.WriteLine("This is SmallGod" + ' ' + this.y);
    }
}

class Program
{
    static void Main(string[] args)
    {
		SmallGod god = new SmallGod(5, 6);
    }
}

输出为
在这里插入图片描述

4.访问修饰符

在这里插入图片描述
public和private修饰字段和方法的时候,表示该字段或方法能不能通过对象去访问,只有public才可以通过对象访问,private只能在类模板内部访问

protected当没有继承的时候,它的作用和private一样,即外界不能通过对象去访问,当有继承的时候,其表示可以被子类访问的字段或方法。

在这里插入图片描述
static可以修饰字段或方法,修饰字段时表示这个字段是静态的数据,叫静态字段或静态属性;修饰方法时叫静态方法或静态函数。

当我们构造对象时,对象中只包含了普通字段,不包含静态字段(即对象访问不到类中的静态成员)。使用static修饰的成员,只能通过类名访问
例如:

class God
{
    public static int z;
}

class Program
{
    static void Main(string[] args)
    {
        God god;
        god.z = 666;//对象访问不到
        God.z = 666;//通过类名访问
    }
}
5.定义和实现接口
  • 定义接口:
    public interface NameInterface
    {
    public type Name();

    }
  • 实现接口:
    public/private/protected class NameClass:NameInterface
    {

    }

定义一个接口在语法上跟定义一个抽象类完全相同,但不允许提供接口中任何成员的实现方式,一般情况下,接口只能包含方法,属性,索引器和事件的声明。接口不能有构造函数,不能有字段,不允许运算符重载,不允许声明成员的修饰符,接口成员都是公有的。

接口可以彼此继承,其方式与类的继承方式相同
例如:

public interface Interface1
{
    void Method1();
}
interface Interface2:Interface1
{
    void Method2();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值