一、方法的由来
method(方法)的前身是c/c++语言中的函数,方法是面向对象里面的概念,简单来说,当函数以类的成员出现的时候就是方法。别名(成员函数)
- 方法永远都是类(或结构体的成员)
方法不能独立于类之外 - 是类(或结构体)最基本的成员之一(方法和字段)
字段与方法–成员变量与方法
方法表示类“能做什么事情” - 为什么需要方法和函数
1.隐藏复杂的逻辑
2.把大算法分解为小算法
3.复用(reuse ,重用)
#include<stdio.h>
//Function
double Add(double a ,double b)
{
return a+b;
}
int main()
{
double x=3.0;
double y=5.0;
double result=Add(x,y);
printf("%f+%f=%f",x,y,result);
return 0;
}
c++
#inclued<iostream>
double Add(double a ,double b)
{
return a+b;
}
int main()
{
double x=3.0;
double y=5.0;
double result=Add(x,y);
std::cont<<x<<"+"<<y<<"="<<result;
return 0;
}
二、方法的定义与使用
- 声明方法的语法详解
方法的定义与声明是一个意思
方法头,方法体,形参,返回值类型
public double GetCricleArea(double r)
{
}
- 方法命名规范
方法命名要是动词或者动词短语,命名规范遵循AaaaBbbCcc - 重温静态方法
静态方法隶属类 - 调用方法
语法:方法名后面跟上一对圆括号(方法调用操作符),在里面写入必要的参数(实际参数),实际参数要与形参相匹配
class Program{
static void Main(string[] args)
{
Calculator c = new Calculator();
double result= Calculator.GetCircleArea(3);
}
class Calculator
{
public static double GetCircleArea(double r)
{
result =3.14* r*r;
}
}
三、构造器
四、方法的重载
方法的重载(Overload)方法名可以相同,方法的签名不一样
- 声明带有重载的方法
1.方法签名,由方法的名称,类型形参的个数和它的每一个形参(按从左到右的顺序)的类型和种类(值,引用或输出)组成。方法签名不包含返回类型。
class Calculator
{
public int Add(int a,int b)
{
return a + b;
}
public int Add(int a,int b,int c)
{ return a + b + c; }
public double Add(double x,double y)
{
return x + y;
}
}
2.实例构造函数签名由它的每一个形参(按从左到右的顺序)的类型和种类(值,引用或输出)组成。
3.重载决策(到底用哪一个重载):用于在给定了参数列表和一组候选函数成员情况下,选择一个最佳函数成员来实施调用。
class Program
{
static void Main(string[] args)
{
Calculator c=new Calculator();
int x= c.Add(100, 100);
Console.WriteLine(x);
}
class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public int Add(int a, int b, int c)
{ return a + b + c; }
}
五、如何对方法进行Debug
- 设置断点
- 观察方法调用时的call stack
- Step-in,Step-over,Step-out
- 观察局部变量的值与变化
六 、方法的调用与栈*
方法调用时栈内存的分配
- stack Frame-一个方法被调用的时候,在栈中的布局。