Java思维---基础知识( 方法[构造|重载|重写|参数传递|递归] && 静态变量和静态方法[static])

99 阅读3分钟

四、方法

1.方法

函数——>方法

  • C、C++中称为函数
  • Java中称为方法

方法的四要素:方法返回值类型、方法名称、形式参数、方法体。


2.方法的构造

① **(无参构造器)**默认创建,隐藏的,只要创建类,就会存在无参数构造函数

public Dogs(){
}

先定义,再使用。

实例:

  1. 注册新账户
  2. 注册完成后再补充资料

② **(有参构造器)**有参数的构造函数

public Dogs(String name,String variety,int age){
    this.name=name;
    this.variety=variety;
    this.age=age;
}

初始化=定义+使用

实例:

  1. 在注册账户的同时填写资料

3.方法的重载

  1. 方法名相同
  2. 参数个数或参数类型不相同
public static int sum(int x,int y){
    return x+y;
}
public static double sum(double x,double y){
    return x+y;
}
public static int sum(int x,int y,int z){
    return x+y;
}

特点:

  1. 必须是两个以上同名的方法
  2. 方法之间的参数组合必须不同(参数的数目不同或参数类型不同)
  3. 方法的返回值不能作为判断方法之间是否构成重载的依据

好处:

  • 简化类调用者的代码,在感觉类有一种自动化调用的功能的同时,并未增加类创建的代码

4.方法的重写

在一个类中,子类对父类中的方法,进行重新实现。

拥有相同的方法名称、返回值、形参列表。

  • 子类中的权限大于或等于父类的权限,(修饰符高低:private < 默认修饰符<protected < public)
  • 修改方法的权限只能从小范围到大范围
  • static修饰的方法,无法被重写。
  • 特殊情况:子类不能重写父类被声明为private权限的方法

5.方法参数以及传递

Java语言中,方法中参数的赋值,只采用传值的方式,按照类型又分为:基本数据类型、引用数据类型。

① 基本数据传递:

int x = 5;
System.out.println("调用前:"+x);
change(x);
System.out.println("调用后:"+x);

public static void change(int x){
 x = 300;
 System.out.println("执行中:"+x);
}

输出:

调用前:5
执行中:300
调用后:5

② 引用数据传递:

calc.mCurrentResult = "调用方法前";
System.out.println("方法调用前:"+calc.mCurrentResult);
change(calc);
System.out.println("方法调用后:"+calc.mCurrentResult);

public static void change(计算器 calc){
 calc.mCurrentResult = "调用change方法";
 System.out.println("方法执行中:currentResult:"+calc.mCurrentResult);
}

输出:

方法调用前:调用方法前
方法执行中:currentResult:调用change方法
方法调用后:调用change方法

6.递归调用

//计算从1到10的加法和
int sumCount = sum(10);
System.out.println("sumCount is:"+sumCount);

private static int sum(int n){
 if(n==1){
 return 1;
 }else{
 return n+sum(n-1);
 }
}



五、静态变量和静态方法

静态变量和静态方法完全脱离对象,建立在类的基础上。

在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。

静态成员不依赖于类的特定实例,被类的所有实例共享,就是说 static 修饰的方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,Java 虚拟机就可以根据类名找到它们。

  • static 修饰的成员变量和方法。
  • 普通变量和方法从属于对象。
  • 静态方法不能调用非静态成员,编译会报错。

1.静态变量

静态变量可以被类的所有实例共享。

//NanG 小区名 静态变量
public static String plot="NanG";
System.out.println("Dogs.plot="+Dogs.plot);

2.静态方法

静态方法中不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。

//injection 打针 静态方法(声明文件中可见,不能被其他文件所用)
public static void injection(){
    System.out.println("所有狗狗,月底打针");
}