文章目录
方法与方法重载
定义带参数的方法
<访问修饰符> 返回值类型 <方法名>(<形式参数列表>) {
//方法的主体
[return 返回值]
}
public void addName(String name){
//方法体
}
调用带参数的方法
对象名.方法名(参数1, 参数2,......,参数n) // 实参列表
注意:
-
调用方法时不能指定实参类型
-
形参和实参数据类型一致,数量一致
方法传参
基本数据类型:值传递(浅拷贝)
引用数据类型:地址传递(深拷贝)
构造方法
访问修饰符 构造方法名(参数列表) {
//方法体
}
特征
-
无返回值(不需要写void)
-
方法名与类名相同(区分大小写)
-
系统默认提供无参构造方法,可以重写指定参数
作用
对象初始化:系统提供默认无参构造方法。
Student s1 = new Student(); // 无参构造方法
s1.name = "张三";
s1.score = 40;
Student stu1 = new Student("张三",40); // 带参构造方法
方法重载
一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。
特征
- 同一个类中
- 方法名相同
- 参数个数或类型不同
- 与返回值、访问修饰符无关
构造方法重载
此时系统不再提供默认无参构造方法,需要手动添加,方可使用无参构造方法。
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
带参构造方法this关键字是对一个对象的默认引用这里用以区分同名成员变量
this的五种用法
this 就是一个变量,代表当前对象。可以用在方法中,来拿到当前对象。哪个对象调用方法,this就指向哪个对象。
1、区分实例变量和参数
当方法或构造函数的参数与实例变量同名时,使用 this.变量名
区分。
public class Person {
private String name;
public Person(String name) {
this.name = name; // 使用 this 区分实例变量和参数
}
public void setName(String name) {
this.name = name; // this.name 指向实例变量
}
}
2、调用当前对象的方法
this.方法名()
可以用于调用当前对象的其他方法
public class Calculator {
public void add(int a, int b) {
System.out.println("sum = " + (a + b));
}
public void calculate() {
this.add(5, 10); // 使用 this 调用另一个方法
}
}
3、在构造函数中调用其他构造函数
使用 this()
调用同一类中的其他构造函数。常用于构造函数重载。
public class Rectangle {
private int length;
private int width;
public Rectangle() {
this(1, 1); // 调用带参数的构造函数
}
public Rectangle(int length, int width) {
this.length = length;
this.width = width;
}
}
4、返回当前对象
this
可以作为方法的返回值,允许方法返回当前对象。常用于建造者模式。
public class Builder {
private String value;
public Builder setValue(String value) {
this.value = value;
return this; // 返回当前对象
}
}
5、在匿名内部类中使用 this
在匿名内部类中,this
关键字指代的是内部类的实例,而不是外部类的实例。如果需要引用外部类的实例,可以用 OuterClassName.this
来指定。
public class OuterClass {
private String outerField = "Outer";
public void createInnerClass() {
// 创建匿名内部类
Runnable runnable = new Runnable() {
private String innerField = "Inner";
@Override
public void run() {
System.out.println("Inner field: " + innerField);
// 使用 this 访问匿名内部类的实例
System.out.println("This is: " + this);
// 使用 OuterClass.this 访问外部类的字段
System.out.println("Outer field: " + OuterClass.this.outerField);
}
};
// 执行 Runnable 实现的 run 方法
runnable.run();
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
outerClass.createInnerClass();
// ner field: Inner
// This is: OuterClass$1@4554617c
// Outer field: Outer
}
}
成员变量和局部变量及其区别
1.含义
- 变量声明的位置决定变量作用域
- 变量作用域确定可在程序中按变量名访问该变量的区域
public class AutoLion{
变量1类型 变量1; // 成员变量
变量2类型 变量2;
变量3类型 变量3;
public 返回类型 方法1(){
变量4类型 变量4; // 局部变量
}
public 返回类型 方法2(){
变量5类型 变量5; // 局部变量
}
}
2.区别
①作用域不同
局部变量的作用域仅限于定义它的方法;成员变量的作用域在整个类内部都是可见的
②初始值不同
Java会给成员变量一个初始值;不会给局部变量赋予初始值
在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级