方法用来实现类的行为。在JAVA中,方法定义在类中,它和类的成员属性一起构建一个完整的类。构成方法有四大要素。返回值、返回名称、参数、方法体。
语法:
修饰符 返回值 返回名(参数列表)
{
//方法体
return 返回值
}
- 修饰符: 定义了该方法的访问类型
- 返回值类型 制定方法返回的数据类型
- 方法名 方法名的命名遵循JAVA标识符的规范,但通常以英文中的动词开头
- 参数列表 参数列表是由类型、标识符组成的序列,每对之间用逗号分开。参数实际上是方法被调用时接收传递过来的参数变量值。
- 方法体 方法体中存放的是封装在{}内部的逻辑语句,用于完成一定的功能。
方法的使用
我通过一段代码来表示:
class Person {
String name;
int age;
void talk() //定义talk()方法,用于输出Person对象的name和age属性
{
System.out.println("我是:"+name+",今年:"+age+"岁");
}
void setName(String name){ //用于输出Person对象的name属性
this.name = name ;
}
void setAge(int age){ //用于输出Person对象的age属性
this.age = age;
}
}
public class PersonTest{
public static void main(String[] args){
Person p1 = new Person();
p1.setName("zouzou");
p1.setAge(22);
p1.talk();
}
}
方法中的形参和实参
- 1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
- 2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
- 3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
- 4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。
方法的重载
重载和重写的区别
(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具
有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型
来决定具体使用哪个方法, 这就是多态性。
(3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
用一段代码示例:
public class OverloadValueOf {
public static void main(String[] args){
byte num_byte = 12;
short num_short = 34;
int num_int = 12345;
float num_float = 12.34f;
boolean b_value = false;
System.out.println("num_byte is" + String.valueOf(num_byte) ); //使用String类下的静态重载valueOf()方法,形参类型是byte型
System.out.println("num_short is" + String.valueOf(num_short) );
System.out.println("num_int is" + String.valueOf(num_int) );
System.out.println("num_float is" + String.valueOf(num_float) );
System.out.println("b_value is" + String.valueOf(b_value) );
}
}
自定义设计重载方法时,需注意以下几点:
- 1、方法名称相同
- 2、方法的参数列表相同(参数个数、参数类型、擦书顺序,至少要有一项是不同的)
方法的重写:
- (1)父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某
方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 - (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,
则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键 字引用了当前类的父类。 - (3)子类函数的访问修饰权限不能少于父类的;
构造方法
在每一个类中定义的,并且是在使用关键在new实例化一个新对象的时候默认调用的方法。主要工作是对新创建的数据成员赋值。语法如下:
class 类名称
{
访问权限 类名称(类型1 参数1,类型2 参数2...) //构造方法
{
程序语句;
...//构造方法没有返回值
}
}
注意事项:
- 1、构造方法的名称必须和其所属的类名称保持一致
- 2、构造方法没有返回值,也不可以使用void
- 3、构造方法也可以像普通方法一样被重载;
- 4、构造方法不能被static和final修饰
- 5、构造方法不能被继承,子类使用父类的构造方法要使用super关键字