主要内容:方法的由来,方法的定义和调用,构造器(特殊的方法),方法的重载,方法的调试,
(什么是构造函数,构造函数的特点,带参数的构造函数,不带参数的构造函数)
方法的调用与栈的关系。
方法的由来:面向对象称方法,面向过程为函数
方法永远都是类(或结构体)的成员:(只有作为类或结构体的成员时才被称为方法)
C#中,方法不可能独立于类而存在,方法的声明放在类之外、其他函数体内,都不行
(C++中是可以存在的,成为全局函数)
方法是类(或结构体)最基本的成员之一(最基本是两个:字段与方法,又成为成员变量与成员函
数)(本质还是数据+算法)(表示类能做什么事情)
目的:隐藏复杂逻辑,分解算法(自顶向下,逐步求精)(面向过程的标准思想),复用
C#中,方法的声明和定义不分家(C++里面有头文件,分家)
声明:方法命名用动词或动词短语命名,形参(parameter)(变量)
(静态方法和实例方法:对于学生类,要获得学生名字,只能设置实例方法,要看学生总书,则需
要设置静态方法,静态方法表示是整体的,不是个人的)
调用:实参(调用函数时的真实情况)(argument)(值) ()方法调用操作符
构造器:类型的成员之一(构造函数)(特殊的函数)
狭义的构造器是指“实例构造器” :构建在内存中的内部结构的
new Student(),括号表示调用构造器。
栈内存分配:从比较低到比较高的赋值
默认构造器没有给参数,初始化时通通刷成0;
带参数的构造函数:可以给成员赋予指定的初值;
有带参数的构造函数,就不能调用默认的构造器了;(可以再写一个没有参数的,就可以调用了)
默认构造器:声明引用变量时,先在栈内存里分配四个字节,后(new时)根据实例中的字段给实
例在堆内存分配字段,给实例分配字段时根据字段类型分组来分配,最后再将堆内存地址放在分配
给实例的栈内存里。(默认构造器,都给初始默认值)
有参数的构造器:其余一样,主要区别在于。根据实例字段类型来分配堆内存后,int等值类型的字
段会直接在现在分配的堆内存里进行初始化。当出现类类型(引用类型)时(string),本来分配
给该字段的内存,只作为引用变量,接下来会在堆内存里另找一块位置可以容下该实例(string类
型的实例)的位置,将数据存储初始化后,将该部分内存的地址存储在之前分配给该字段的堆内存
里。(两次内存转储)
默认string是null,null本身在内存中有分配空间,不需要再开辟,没有数据
string默认是空,存的地址也是空,所以是null(默认构造器时,string不用再做内存转储)
public Student(int initid,string initName)
{
this.ID = initid;
this.Name = initName;
}
方法的重载:方法名一样,但是方法签名不能一样。
签名:方法名,类型形参的个数,类型形参的顺序和每一个形参的类型和种类,但不包含返回值类
型
方法调用与栈:
stack frim:方法调用时在栈内的布局
主调用者(main)与被调用者;
主调者会给被调者参数,这几个参数归主调者管(C#中),先压左边,再压右边