目录
构造方法
Java类中有一种特殊的成员方法,成为构造方法。它没有返回类型,也不是void型,它的作用是创建该类的对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。
Java构造方法的定义规则:
构造方法必须与该类具有相同的名字,并且没有方法的返回类型,包括void。构造方法一般都应该用public类型,这样才能在程序任意位置创建对象
语法
访问修饰符 构造方法名(形式参数列表){
方法体
}
构造方法:
1.每个类中至少有一个构造方法,如果类中没有定义构造方法,Java将提供一个默认的构造方法,该构造方法没有参数,方法体为空。如果一个类中已经定义了构造方法,系统就不再提供默认的构造方法。
2.创建类时,建议为该类写一个默认构造方法。因为Java的特点是只要写一个构造方法,java就不会自动提供默认构造方法,因此除了常用的构造方法外,还应增加一个默认的构造方法。
public class Student {
//定义Student类的属性
String name;
int age;
String sex;
String calss;
//定义系统默认的无参构造方法
public Student(){
}
//定义有参构造方法
public Student(String str1, int num , String str2 , String str3){
name = str1;
age = num;
sex = str2;
calss = str3;
}
}
public static void main(String[] args) {
//使用无参构造方法创建Student类对象
System.out.println("无参构造方法");
Student student01 = new Student();
student01.name = "张三";
student01.age = 18;
student01.sex = "男";
student01.calss = "java 一班";
System.out.println("姓名:"+student01.name + " 年龄:"+student01.age
+ " 性别:"+student01.sex +" 班级:"+student01.calss);
//使用有参构造方法创建Student类对象
System.out.println("有参构造方法");
Student student02 = new Student("李四" , 20 , "男" , "java 二班");
System.out.println("姓名:"+student02.name + " 年龄:"+student02.age
+ " 性别:"+student02.sex +" 班级:"+student02.calss);
}
方法重载
在同一个类中,方法可以都多种重载,多个方法的方法名相同,参数列表不同,就构成了方法重载。
方法重载特点:
1.在同一个类中进行方法重载。
2.方法重载的方法名相同。
3.方法重载的参数列表中,参数个数或数据类型不同。
4.方法重载与返回值、访问修饰符无关。
public class Student {
//定义2个int类型数据相加的方法
public int sum(int a , int b){
return a+b;
}
//定义1个int类型数据和1个double类型数据相加的方法
public double sum(int a , double b){
return a+b;
}
//定义3个double类型数据相加的方法
public double sum(double a , double b , double c){
return a+b+c;
}
}
public static void main(String[] args) {
//创建Student对象
Student student = new Student();
//2个int类型数据相加的方法
int result01 = student.sum(6, 4);
System.out.println("2个int类型数据相加的方法:"+result01);
//1个int类型数据和1个double类型数据相加的方法
double result02 = student.sum(10, 5.0);
System.out.println("1个int类型数据和1个double类型数据相加的方法:"+result02);
//3个double类型数据相加的方法
double result03 = student.sum(7.0, 4.0,9.0);
System.out.println("1个int类型数据和1个double类型数据相加的方法:"+result03);
}
关键字this
在方法中给引用来属性的隐藏变量赋值时必须要使用this关键字。关键字this是用来指向当前对象或类实例的,可以用“this.变量名”或“this.方法名”访问类中的变量或调用类方法。
关键字this的用法:
调用属性:“this.变量名”
调用方法:“this.方法名”
调用构造方法:“this()”,必须放在构造方法的第一条语句
public class Student {
//定义Student类的属性
String name;
int age;
String sex;
String calssRoom;
//定义系统默认的无参构造方法
public Student(){
System.out.println("Hello Java");
}
//定义有参构造方法
public Student(String name, int age , String sex , String classRoom){
this();
this.name = name;
this.age = age;
this.sex = sex;
this.calssRoom = classRoom;
}
public class StudentTest {
public static void main(String[] args) {
//使用有参构造方法创建Student类对象
System.out.println("有参构造方法");
Student student = new Student("李四" , 20 , "男" , "java18班");
System.out.println("姓名:"+student.name + " 年龄:"+student.age
+ " 性别:"+student.sex +" 班级:"+student.calssRoom);
}
}
局部变量和全局变量
变量生命的位置决定变量的作用域。
变量作用域确定可在程序中按变量名访问该变量的区域。
局部变量VS全局变量
作用域不同
1.局部变量的作用域仅限于定义它的方法。
2.全局变量的作用域在整个类内部都是可见的。
初始值不同
1.Java会全局变量一个初始值。
2.Java不会给局部变量赋予初始值。
注意:
在同一个方法中,不允许有同名的局部变量,在不同的方法中,可以有同名的局部变量。
在同一个类中,全局变量和局部变量同名是,局部变量具有更高的优先级。