面向对象学习(2)
1、方法重载
2、方法参数的传递
3、成员变量和局部变量
4、构造方法
1、方法重载
1.1、概述
指同一个类中定义的多个方法之间的关系,需满足:
(1)多个方法在同一个类中
(2)具有相同的方法名
(3)多个方法的参数不同(类型不同或者数量不同)
public class Add {
int add(int a,int b){
return a+b;
}
double add(double a,double b,double c){
return a+b+c;
}
double add(double a,double b){
return a+b;
}
double add(double a,int b){
return a+b;
}
double add(int a,double b){
return a+b;
}
}
以上方法构成方法重载。
1.2、方法重载特点:
(1)重载仅针对方法的定义,与方法的调用无关,调用格式参照标准格式
(2)重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关。
2、方法参数的传递
2.1、对于基本数据类型的参数,形式参数的改变不影响实际参数的值
public static void main(String[] args) {
int number=100;
System.out.println("调用change方法前:"+number);//输出100
change(number);
System.out.println("调用change方法后:"+number);//输出100
}
public static void change(int number){
number=200;
}
2.2、对于引用类型的参数,形式参数的改变影响实际参数得值(实际传递的是地址,形参和实参具有同一地址)
public static void main(String[] args) {
int[] arr=new int[]{10,20,30};
System.out.println("调用change方法前:"+arr[1]);//输出20
change(arr);
System.out.println("调用change方法后:"+arr[1]);//输出200
}
public static void change(int[] arr){
arr[1]=200;
}
3、成员变量和局部变量
成员变量的作用域是类的对象(所有成员);
局部变量的作用域是该变量被声明的作用域;
public class Add {
int x;//x、y是成员变量
int y;
int add(int a,int b){//a、b是局部变量
return a+b;
}
}
如果成员变量和局部变量同名,则变量名指向局部变量(就近原则),此时应该用this.变量名来指向成员变量;
public class Add {
int x;//x、y是成员变量
int y;
int add(int x,int y){//x、y是局部变量
return x+y;//指向的是add();定义中的局部变量x、y
this.x=2;//指向的是成员变量x。
}
}
成员变量有对应的默认值,局部变量没有默认值,如果没有初始化,就会编译报错。
public class Add {
int x;//x、y是成员变量
int y;
public static void main(String[] args){
int a;int b;
//add(a,b);//a、b为局部变量,由于没有初始化,此时会报错
Add add1=new Add();
add(add1.x,add1.y);//x、y是成员变量,系统有默认值,故不会报错
}
static int add(int x,int y){//x、y是局部变量
return x+y;//指向的是add();定义中的局部变量x、y
}
}
4、构造方法
4.1、构造方法定义
每一个类默认有一个来自父类的空构造方法:
/* 访问修饰符 构造方法名(){
//初始化代码
}*/
格式中无返回值类型、方法名与类名相同、可以指定参数
//public 类型名(){}//创造对象
public Add(){}//无参构造
public Add(inta,int b){}//有参构造
一旦自定义了有参构造,原来的无参构造就不在提供,因此在定义有参构造同时,应该同时定义无参构造
快速构造方法快捷键:
Alt+Insert+Constructor
或右键+Generate+Constructor
4.2、构造方法调用(创建类的对象并进行初始化)
//类型名 对象名=new 类型名(形参列表);//有参构造方法调用
//类型名 对象名=new 类型名();//无参构造方法调用,初始化的值是系统默认值