方法与重载
方法的参数传递
-
定义带参数的方法:
<访问修饰符> 返回类型 <方法名>(形式参数列表){
//方法的主体
}
-
调用带参数的方法:
对象名.方法名(参数1,参数2,……,参数n);
//方法定义
public void addName(String name){
//方法体
}
//方法调用
对象名.addName(name); //调用方法时不能指定实参类型
//形参和实参的数据类型要一致,数量也要一致
带多个参数的方法
方法传参
基本数据类型和引用数据类型数据在传参时区别:
基本数据类型,操作传递的是变量值,改变一个变量的值不会影响另一个变量的值。
引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用。
构造方法:
访问修饰符 构造方法名(){
//初始化代码
}
●无返回值类型 ●方法名与类名相同 ●可以指定参数
//学生类
public class Student{
public String name;
public int score;
public Student(){
System.out.println("无参构造方法");
}
public Student(String name, int score) {
this.name = name;
this.score = score;
}
}
//测试类
Student[] stu = new Student[3];//创建数组
Student s1 = new Student(); //无参构造方法
s1.name = "张三";
s1.score = 40;
Student s2 = new Student();
s2.name = "李四";
s2.score = 90;
stu[0] = s1;
stu[1] = s2;
*****************************************************************
//带参构造方法
Student stu1 = new Student("张三",40);
Student stu2 = new Student("李四",90);
-
如果类中没有无参的构造方法,系统会给出默认的无参构造方法。
-
构造方法一般都是public 的,才能被系统调用。
-
当类有了带参构造方法之后,系统不再自动生成默认的无参构造方法,若使用需重新定义
-
构造方法只能用于创建对象时,不能在程序中像调用其他方法一样调用它,但是可以用this()的形式在其他构造方法中调用它,注意this()必须在第一行。
-
无返回类型不是指void,public void Student(){} 是普通方法而不是构造方法
构造方法重载:
//带参构造方法this关键字,是对一个对象的默认引用,这里用以区分同名成员变量
public Student(){}
public Student(String name,int age){
this.name=name;
this.age=age;
}
this 的用法
*调用属性: this.health = 100; this.name = "健康"; *调用方法: this.print(); *调用构造方法: this(); //如果使用,必须是构造方法中的第一条语句 this("小黑",100,100,"男");
构造方法使用
方法重载
-
同一个类中
-
方法名相同
-
参数个数或类型不同
-
与返回值、访问修饰符无关
//以下不属于方法重载的是( B )。 (A) public void method1(){} public void method1(int i){} (B) public void method1(){} public int method1(){return 0;} (C) public void method1(){} public int method1(int i){return 0;}
成员变量和局部变量
-
变量声明的位置决定变量的作用域,超出作用域后不可使用
-
变量作用域确定可在程序中按变量名访问该变量的区域
区别:
1.成员变量的作用域在整个类内部都是可见的不会赋予局部变量初始值
2.局部变量的作用域仅限于定义它的方法,Java会给它一个初始值
3.在同一个方法中,不允许有同名局部变量,在不同方法中可以有同名局部变量
4.在同一个类中,成员变量和局部变量同名时,局部变量具有更高优先级
补:
private关键字
-
是一个权限修饰符
-
可以修饰成员(成员变量和成员方法)
-
如果被其他类使用:
-
提供 get变量名() 方法,用于获取成员变量的值,方法用public修饰
-
提供 set变量名(参数) 方法,用于设置成员变量的值,方法用public修饰
-
public class Student{
//成员变量
private String name;
private int age;
// get/set方法
public void setName(String n){
name = n;
}
public String getName(){ //不能用void,与上面类型一样
return name;
}
public void setAge(String a){
age = a;
}
public String getAge(){ //不能用void,与上面类型一样
return age;
}
public void show(){
Systen.out.print(name+","+age); //三百七七,22
}
}
//测试类
public class StudentTest{
pubilc static void main(String[] args){
//创建对象
Student s = new Student();
//使用set方法给成员变量赋值
s.setName("三百七七");
s.setAge(22);
s.show();
//使用get方法获取成员变量的值(随意定义格式)
System.out.println(s.getName()+"---"+s.getAge()); //三百七七---22
System.out.println(s.getName()+","+s.getAge()); //三百七七,22
}
}