一、重载(overload)
-
发生在一个类中
-
方法的签名:方法名+参数列表。一个类中有且只有一个签名
-
Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)编译器根据签名绑定调用方法。注:视为方法名相同的不同方法
例如:System.out.println(); 其中println()使用了方法的重载。
/**
* 1.同一个文件中,可以包含多个类(实际中只能写一个)
* 2.public的类只能有一个
* 3.必须和文件命相同
*/
public class OverloadDemo {
public static void main(String[] args) {
}
}
class Aoo{
void say(){}
void say(String s){}
void say(String s, int num){}
void say(int num, String s){}
// void say(int num, String asd){}与参数名称无关,与类型有关
// int say(String s, int num){return 0;}重载与返回值无关
}
二、构造方法
作用:
-
给成员变量赋值;
-
构造方法名与类名相同,没有返回值类型;
-
在new对象的时候被调用;
-
类有一个默认的无参构造方法,如果存在有参构造(建议必要写一个无参构造方法),不会调用无参构造方法;
-
构造方法可重载。
三、this
-
只能用在方法中,方法中使用成员变量,默认前面都有一个this
-
方法访问成员变量时使用this(可以被省略),构造方法中不可省略。
-
当成员变量和局部变量重名时,this不能省略
-
this表示该对象的代词,那个对象调用方法,this就是该对象。谁调就是谁;
注意:数字、_、$在特殊情况下使用
用法:
-
访问成员变量:this.成员变量名
-
调用方法:this.方法名()(一般不用)
-
调用构造方法:this()
/**
* 学生类
*/
public class Student {
private String name;
private int age;
private String address;
public Student() {
this(null);
}
public Student(String name) {
this(name,0);
}
public Student(String name, int age) {
this(name,age,null);
}
public Student(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
}
/**
* 在同一个包中类,可以直接使用包下的其他类不需要导包
*/
public class StudentText {
public static void main(String[] args) {
Student student = new Student();
Student student1 = new Student("xiangming");
Student student2 = new Student("asdf",23);
Student student3 = new Student("wsdf",12,"sdfsafd");
System.out.println("student = " + student);
System.out.println("student1 = " + student1);
System.out.println("student2 = " + student2);
System.out.println("student3 = " + student3);
}
}
null和nullpointerexception
null:空,没有任何指向,此时再去点,必定会报空指针异常
引用类型之间画等号
赋值的是地址,多个引用指向同一个地址,其中一个内容修改,必定会影响其他引用的值,因为指向相同。
基本数据之间划等号
赋值的是实际的值,对一个值修改,其他的不变,互不影响
public class NullDemo {
public static void main(String[] args) {
Student student = new Student("lj",12,"asdf");
//赋值的是地址
Student ls = student;
System.out.println("student = " + student);
ls.setAge(18);
System.out.println("student = " + student);
int a = 5;
int b = a;
//对值的修改
b = 6;
System.out.println("a = " + a);
//将student设置为空,此时会有异常
student = null;
System.out.println("student = " + student.getAge());
}
}
最后声明,以上内容是自己的学习、总结的,分享给大家。如果有不当的地方还请大佬指正交流!