• C#基础入门 五


    C#基础入门 五

    递归

    • 递归调用:一个方法直接或间接地调用了它本身,就称为方法的递归调用。
    • 递归方法:在方法体内调用该方法本身。
    • 递归示例
    public long Fib(int n)
    {
    	if(n==0||n==1)
    	return n;
    	return Fib(k-2)+Fib(k-1);
    }
    
    • 练习:利用递归计算1+2+3...+100的值。
    static int Fun(int n){
    	if(n==1)
    	return n;
    	return n+Fun(n-1);
    }
    

    构造方法和析构方法

    构造方法

    • 构造函数用来初始化对象。比如要建立一个铅笔的对象,那么可以用构造函数来控制它的初始状态,如长度、宽度、颜色等。
    • 构造方法必须跟类重名,构造方法没有返回值,但可以有多个重载。
    • 构造方法的本质是一个构造器,是为了类的实例化而产生的,构造方法是一种特殊的方法,只能在初始化的时候被执行,外部不能调用。
    • 构造方法可以不写,系统会默认为你的类添加一个无参构造方法。
    • 如果将构造函数设为private,则不能被外部实例化。
     public class Student
        {
            public int age;
            public string name;
            public int grade;
            public Student(int a,string n, int g){
                age = a; name = n; grade = g;
    
        }
        }
    
        class MainClass
        {
            
            public static void Main(string[] args)
            {
                Student student = new Student(21, "zxh", 100);
                Console.WriteLine(student.age+student.name+student.grade);
    
            }
        }
    

    析构方法

    • 析构方法用于析构类的实例,用于释放内存空间。
    class Car
    {
    	~Car()
    	{
    		//cleanup statements
    	}
    }
    
    • 不能在结构中定义析构方法,只能对类使用析构方法,一个类只能有一个析构方法,无法继承或重载,无法调用析构方法,,只能自动调用,析构方法既没有修饰符,也没有参数。

    面向对象程序设计

    • 面向过程:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
    • 面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
    • 面向对象特性:封装、继承、多态。
    • OOP(面向对象编程)达到软件工程的三个主要目标:重用性、灵活性和扩展性。

    封装

    • 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(称之为类)。
    • 封装的意义在于保护或者防止代码被我们无意中破坏。
    • 封装就是对类成员的再次包装。

    继承

    • 继承用于创建可重用、扩展和修改在其他类中定义的行为的新类,其成员被继承的类称为“基类”,继承这些成员的类称为“派生类”,派生类只能有一个直接基类,但是继承是可传递的,如果ClassB派生出ClassC,ClassA派生出ClassB,则ClassC会继承B和A中声明的成员。
    • 基类有的,派生类都有,派生类有的,基类可能没有,即:派生类可以赋值给基类,而基类不能赋值给派生类。public class Student:Person{} Student继承Person。
    public class Person
        {
            public void Eat()
            {
                Console.WriteLine("人都要吃饭");
            }
        }
        public class Student:Person
        {
            public void Learn()
            {
                Console.WriteLine("学生都要学习");
            }
        }
        public class Senior : Student
        {
            public new void Learn(){//方法替换
                Console.WriteLine("高中生要学的更多");
            }
            public void University()
            {
                Console.WriteLine("高中生要考大学");
            }
        }
        class MainClass
        {
            
            public static void Main(string[] args)
            {
                Senior sen = new Senior();
                sen.Learn();
                sen.University();
                sen.Eat();
    
            }
        }
    
    > 打印结果:
    > 高中生要学的更多
    > 高中生要考大学
    > 人都要吃饭
    
    

    多态

    • 当派生类从基类继承时,它会获得基类的所有方法、字段、属性和事件,派生类可以选择:
      • 继承最接近的基类方法而不重写它
      • 重写基类中的虚拟成员
      • 定义隐藏基类实现的成员的新非虚实现,通常我们称这为“方法替换”。
    • 虚函数:用virtual修饰的方法成为虚方法;
    • 重写:用override修饰的是方法重写;
    • 密封类:sealed修饰符,修饰类为密封的,不可被继承不可被重写,派生类可以通过sealed来停止继承,内部的方法可以通过sealed来阻止被重写。
    • 静态类被默认为密封类,所以静态类不能被继承。
  • 相关阅读:
    PHP数组、函数
    PHP 基本内容
    Swift基础--tableview练习
    iOS 协议delegate分六步
    UI09_UITableView 使用 单例
    css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?一起来$('.float')
    CSS 如何使DIV层水平居中
    HTML转义字符大全
    jQuery选择器总结
    jQuery 学习笔记_01
  • 原文地址:https://www.cnblogs.com/senlinmilelu/p/8445660.html
Copyright © 2020-2023  润新知