面向对象1
- 构造方法: 构造函数,构造器,构建器,--------复用给成员变量赋初始值代码
- 作用:给成员变量赋初始值
- 与类同名,没有返回值类型
- 在创建(new)对象时被自动调用
- 若自己不写构造方法,则编译器提供一个无参构造方法,若自己写了,则不再默认提供
- 构造方法可以重载
class Student{
String name;
int age;
String address;
//利用构造方法给成员变量赋初始值
//构造方法必须与类名相同,没有返回值类型,在创建对象时被自动调用,
//若自己不写构造方法,则编译器提供一个无参构造方法,若自己写了,则不再默认提供
Student (String name1,int age1,String address){//给成员变量赋初始值
name=name1;
age=age1;
address=address1;
}
}
//在创建对象的时候就会自动调用我们在类中建立好的构造方法
Student zs=new Student("张三",25,"廊坊");
Student ls=new Student("里斯",20,"佳木斯");
Student ww=new Student("王五",20,"冰岛");
Student oi=new Student();//编译错误
//因为我们建立了有参构造方法,所以系统将不再提供默认的无参构造方法
s Student{
String name;
int age;
String address;
Student(){
}
//利用构造方法给成员变量赋初始值
//构造方法必须与类名相同,没有返回值类型,在创建对象时被自动调用,
//若自己不写构造方法,则编译器提供一个无参构造方法,若自己写了,则不再默认提供
Student (String name1,int age1,String address){//给成员变量赋初始值
name=name1;
age=age1;
address=address1;
}
}
//在创建对象的时候就会自动调用我们在类中建立好的构造方法
Student zs=new Student("张三",25,"廊坊");
Student ls=new Student("里斯",20,"佳木斯");
Student ww=new Student("王五",20,"冰岛");
Student oi=new Student();//编译正确因为我们自己建立了一个无参构造(并非系统提供的默认无参构造)
class Student{
//成员变量
String name;
int age;
String address;
//给成员变量赋初始值//构造方法
Student(String name1;int age1;Stirng address1){
name=name1;
age=age1;
address=address1;
}
}
Student zs=new Student("张三",25,"廊坊");
1.创建了一个学生对象
2.给成员变量赋默认值
3.调用构造方法
Student zs=new Student();
Student zs= new Student();
zs.name="张三";
zs.age=19;
zs.address="哈尔滨";
- this:指代当前对象,哪个对象调用方法它指的就是哪个对象
- 只能用在方法中,方法中访问成员变量之前默认有this.
this的用法
- this.成员变量--------访问成员变量
注意!!!!! 当成员变量与局部变量同名的时候,如果想访问局部变量要使用this.
- this.方法名()--------调用方法(一般不用)
- this()-------------------调用构造方法
补充:
- 成员变量:类中方法外 ,作用范围为整个类
局部变量:方法里(包括方法参数),作用范围为当前方法中
- java规定:成员变量和局部变量可以同名,使用的时候 默认采取的是 就近原则
- 内存管理:由JVM(Java虚拟机)来管理
- 堆:new出来的对象(包括成员变量)都放在堆区
- 栈:局部变量(包括方法参数)都放在栈区
- 方法区:
Student zs=new Student("zhangsan",25,"langfang");
//创建zs对象且调用构造方法
//并且将"zhangsan"传给局部变量name 将25传给局部变量age 将"langfang"传给局部变量address
//后观察构造方法this.name=name;//这句话的含义是zs.name="zhangsan";
//this.age=age;//zs.age=25;
//this.address=address;//zs.address="langfang";
class Student{
String name;//成员变量(整个类都能访问):类里且方法外的都是成员变量
int age;
String address;
//构造方法:给成员变量初始化
Student(String name,int age,String address){//局部变量
this.name=name;//把局部变量赋值给成员变量
this.age=age;
this.address=address;
}
void study(){//方法
System.out.println(this.name+"在学习");
}
void sayHi(){//方法
System.out.println("大家好我叫"+this.name+"今年"+this.age+"岁了,家住在"+this.address);
}
}
Student zs=new Student();
zs.name="zhangsan";
zs.address="河北廊坊";
zs.age=25;
zs.study();
zs.sayHi();
- null和NullPointerException
- null 表示空,没有指向任何对象 如果引用的值为null则不能进行任何点操作了,若操作则发生NullPointerException(空指针异常)
若引用的值为null,则该引用不能再进行任何点操作了,
若操作则发生NullPointException空指针异常