12608人加入学习
(21人评价)
C#编程-第二季-面向对象-宇宙最简单2021最新版

制作完成于2021-10月20日 使用VS2019

价格 免费

隐藏方法

若是虚方法,调用的时候会调用子类重写后的方法

若是隐藏方法,会调用父类的方法,不会调用子类的方法

 class Enemy
    {
        public void AI()
        {
            Console.WriteLine("Enemy的AI");
        }
    }
    class Boss : Enemy
    {
        public new void AI()
        {
            Console.WriteLine("Boss的AIs");
        }
    }
    class program
    {
        static void Main(string[] args)
        {
            Enemy b = new Boss();


            b.AI();    //  敌人的AI
        }
    }

[展开全文]

⭐虚函数

子类可以赋值给父类

父类不可赋值给子类

1. 虚函数的特点

 虚函数是面向对象语言中多态性的重要实现. 当一个函数方法在声明时, 前面带了virtual关键字, 这个函数就是一个虚函数. 它与非虚函数的主要区别在于它的实现可以在派生类中进行重写(override)(非强制要求). 重写后的函数一样也是虚函数, 当一个类或其基类中存在虚函数后就不允许出现同名, 返回值, 参数类型个数相同的非虚函数.

 虚函数由于可以被子类改写的特点, 不允许设为私有(private), 同时也不能和static, override, abstract等一起使用.除了函数方法外, C#中还可以用virtual修饰属性, 索引器, 事件等等.

2. 虚函数的执行过程

 当调用一个对象的一个函数时, 系统会首先去检查该对象的声明类中这个函数是不是虚函数, 如果不是虚函数就直接执行函数. 如果是虚函数的话再去检查这个对象的实例类, 看看实例类中有没有重写这个虚函数, 如果有的话就直接执行该函数, 否则就去找这个实例类的父类, 看看他的父类中有没有重写这个虚函数,有的话就执行, 没有的话就继续找直到找遍所有父类, 如果没有override关键字, 最后会执行申明类里的虚函数.

例子:

public class GoodClass
    {
        public virtual void GoodFunc()
        {
            Console.WriteLine("This is a good function!!!");
        }
    }

    public class NiceClass : GoodClass
    {
        public override void GoodFunc()
        {
            Console.WriteLine("This is a nice function");
        }
    }
    public class start
    {
        public void main()
        {
            GoodClass gc = new GoodClass();
            gc.GoodFunc();
            GoodClass nc = new NiceClass();
            nc.GoodFunc();
        }
    }
This is a good function!!!
This is a nice function
————————————————
public class GoodClass
    {
        public virtual void GoodFunc()
        {
            Console.WriteLine("This is a good function!!!");
        }
    }

    public class NiceClass : GoodClass
    {
        public override void GoodFunc()
        {
            Console.WriteLine("This is a nice function");
        }
    }
    
    public class GreatClass : NiceClass{}
    public class start
    {
        public void main()
        {
            GoodClass gc = new GreatClass();
            gc.GoodFunc();
        }
    }
    This is a nice function
————————————————
                        
原文链接:https://blog.csdn.net/lx2054807/article/details/102703775

[展开全文]

base.变量   访问父类成员

this.变量   访问当前类成员

[展开全文]

访问权限

public 全局可访问(最开放)

private 只有在己类中可访问(最私密)

protected 继承类可访问

[展开全文]

属性用法(缩写prop)

一般将成员变量命名为驼峰法,例如myAge,elemNum。且一般都是私有化。

属性命名一般是首字母大写,大驼峰法,属性变量名会被系统自动创建,和其他变量无关。

使用时里面包含了set和get,若其中一个不写则没有相应功能。

匿名类型

var 类型,自动分配变量类型,像c++的auto

 

[展开全文]

while(true){

try{

break}

}

循环捕获异常,有异常直接catch,无异常跳出

[展开全文]

1.函数重载

2.new是开辟地址,如何进行比较,比较的是在内存中的地址

3.如何重载

运算符重载关键字:operator

运算符首先要看重载的是什么符号,然后定义什么类型,都是bool

访问修饰符 static 返回值类型 operator 运算符(两边地址里边的值)

 

 

[展开全文]

1.怎么调用父类的构造函数?

    在方法后边+:base(),括号是父类的构造函数的参数

[展开全文]

1.abstract抽象类

2.抽象函数,只有定义的方法,没有方法体

3.类前边加abstract就是抽象类

4.定义抽象类的方法

   在抽象类中,定义抽象方法,只需要在返回值类型面前+abstract即可,没有方法体

5.抽象类不能实例化一个对象

6.抽象类可以利用子类构造

7.抽象类利用子类重写方法时,在返回值类型前加override

8.sealed密封类

9.密封类是不能被继承的

10.如何声明密封方法?

    需要重写后才能密封,sealed o'v

[展开全文]

静态

加上static就是静态

静态成员通过类来访问

静态变量存储在静态存储区

静态方法只能 访问静态数据

[展开全文]

补充课程参考集合链接

1、https://www.runoob.com/csharp/csharp-array-class.html

2、https://learn.microsoft.com/zh-cn/dotnet/api/system.array?view=net-7.0

[展开全文]

虚方法用父类定义的时候,显示的是子类方法

隐藏方法用父类定义的时候,显示的是父类方法

[展开全文]

集合类  列表List

 

List<int>list=new List<int>( ) ;

List<int> list=new List<int>( ) { 321,653,832 };

 

 

[展开全文]

一个命名空间下可以创建多个类的,只是我们习惯上一个类一个文件。

[展开全文]

operator  运算符重载关键字,后面跟要进行重载的运算符

 

 

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(1)
视频(60)