构造函数、构造器、构建器--------复用给成员变量赋初值的代码
1.1.作用:给成员变量赋初值
1.2.与类同名,没有返回值类型(连void都没有)
1.3.在创建对象时被自动调用
1.4.若自己不写构造方法,编译器会默认提供一个无参的构造方法,若自己写了构造方法,则不提供默认方法
1.5.构造方法可以重载
指代了当前对象,哪个对象调用了方法就指代哪个对象
关键字,只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:this.成员变量名---------访问成员变量
成员变量与局部变量重名时,若想访问成员变量,则this不能省
this.方法名()-------调用方法(一般不用)
public class Student {
String name; //成员变量
int age;
String address;
Student(){
this("无名氏",1,"不知道"); //调用三个参数的构造方法
}
Student( String name,int age,String address){ //局部变量,当前方法中使用
int a;
this.name =name; //this访问的就是成员变量,无this表示的是就近,也就是局部的变量
this.age = age;
this.address = address;
}
void sayHi(){
System.out.println("大家好,我叫"+this.name+",今年"+this.age+"岁了,家住"+this.address);
}
java规定成员变量和局部变量是可以同名的,使用的时候采用默认原则,若想访问成员变量,则this不能省
构造方法到底要不要参数,要看对象的数据能不能写死,如果对象的数据都一样,意味着可以写死,不需要传参,如果对象的数据不一样,意味着不能写死,那就需要传参
指代当前对象的父类
super的用法:
super.成员变量名---------访问超类的成员变量
super.方法名-----------访问父类的方法------------
super()--------------调用父类的构造方法
class Coo{
void show(){}
double test(){return 0.0;}
//Student say(){return null;}
Person sayHi(){return null;}
}
class Doo extends Coo{
//int show(){return 1;} //编译错误,void时必须相等
//int test(){return 0;} //编译错误,基本类型时必须相等
//Person say(){return null;} //编译错误,引用类型时必须小于或等于
Student sayHi(){return null;} //正确,student小于person
}
报错:
null和NullPointerException:
null只是相对于引用类型而言,他与基本类型之间一点关系都没有
null:表示空,没有指向任何对象,若引用的值为null,则盖印用的不能进行任何操作,若进行操作则会发生NullPointerException空指针异常
由JVM来管理
堆:new出来的对象(包括成员变量)
栈:局部变量(包括方法的参数)
方法区:之后再讲



