C#-class-继承和多态(上)

本文介绍了C#中的继承概念,强调了如何通过继承实现代码重用,并且探讨了多态性这一面向对象编程的关键特性。文中以一个实例说明了如何创建父类和子类,并展示了如何利用子类继承父类的属性。同时,文章还提到了C#中多态性的实现方式,包括使用as和is关键字,以及向上转型和向下转型的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承是实现代码重用的重要机制,使用继承可以在类之间建立一种相交关系。

  • 一个类可以继承于另一个类,分别是子类和父类,子类可以对父类进行扩展和自定义
  • 子类可以重用父类的功能
  • C#里,一个子类只可以有一个父类,父类可以有多个子类
  • 构造函数和析构函数不能被继承

现代人 ak = new 现代人 { gohunting = "猎杀野猪", max = 999 };
Console.WriteLine(ak.gohunting);
Console.WriteLine(ak.max);
鲲鲲 m4 = new 鲲鲲 { gohunting = "m4",Max = 99.99 };
Console.WriteLine(m4.gohunting);
Console.WriteLine(m4.Max);
public class 山顶洞人
{
    public string gohunting;
}
public class 现代人:山顶洞人
{
    public int max;
}
public class 鲲鲲:山顶洞人
{
    public double Max;
}

在这段程序里,创建了一个山顶洞人,相当于是一个父类,拥有gohunting这个属性

public class 山顶洞人
{
    public string gohunting;
}

然后创建两个子类,继承了父类的gohunting属性

public class 现代人:山顶洞人
{
    public int max;
}
public class 鲲鲲:山顶洞人
{
    public double Max;
}

然后就可以创建实例,既可以使用父类的属性,也可以用自己的属性

现代人 ak = new 现代人 { gohunting = "猎杀野猪", max = 999 };
Console.WriteLine(ak.gohunting);
Console.WriteLine(ak.max);
鲲鲲 m4 = new 鲲鲲 { gohunting = "m4",Max = 99.99 };
Console.WriteLine(m4.gohunting);
Console.WriteLine(m4.Max);

多态

面对对象的三大特性之一,同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。

C#通过继承实现多态性

关键字 as强制类型转换 is判断数据类型

注意 as无法进行自定义转换

例如 int x = 3 as long 这样就是不行的

is操作符 通常用于向下转换前的验证 

例如 if(a is dog)

Console.WriteLine(((dog)a).xxx)

如果拆箱转换成功的话,那么例如上条的操作结果就是true

引用转换:创建一个新的引用,它也指向同一个对象

向上转型(一个对象的引用可以隐式的转换到其父类的引用)


        dog d = new dog();
        Console.WriteLine(d);
        Animal da = d;
    
        Console.WriteLine(da == d );

 因为Animal是dog的父类,dog有动物的所有特性,所以dog本身就是Animal,它直接就进行了隐式转换

变量da依旧指向同一个对象dog  

由于父类没有子类的属性,所以da的可视范围更小一些,毕竟它调用不了子类 

向下转型(像转换到子类的引用则需要显示转换)

Animal a = new Animal();
        dog d = new dog();
        Animal da = d;
        //dog s = (dog) da;两种转换方法
        dog s =  d as dog;//如果类型不匹配,转换失败,则不会报错,值变成null
        Console.WriteLine(s == da);
        Console.WriteLine(s == d);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值