类中第三个成员:---用来创建当前类的对象
构造方法:
1.作用:构造当前类的对象
2.写法权限修饰符 返回值类型(当前类的类型,省略不写) 方法名[必须与类名一致](参数列表)[抛出异常]{
创建一个对象(当前类);
返回对象;
}
3.用法:通过new关键字调用
4.构造方法特点:
1.每一个类都有构造方法,若自己在类中没有定义,系统会默认提供无参数的构造方法,若在类中自己定义了构造方法,则默认无参数的构造方法即被覆盖
2.构造方法存在方法重载
package code;
public class test {
// 权限修饰符 类名一致的方法(参数列表) [异常]{方法体}
public test(){
System.out.println("test类的构造方法");
}
public test(String str){
System.out.println("带String参数的构造方法");
}
public static void main(String[] args){
//调用test中构造方法
test t = new test("abc");
}
}
5.既然系统默认提供构造方法,为什么要自定义构造方法:
在创建对象的同时,想要做一些默认提供的构造方法不会做的事情,这个时候我们可以自己定义构造方法
this关键字的使用:当构造方法中属性与变量名重名,必须需要一个代替词代替对象
1.是一个关键字(指代词) 代替的是某一个对象,是当前调用属性或方法时的那个对象
package code;
public class test {
public String name;
public int age;
public String sex;
// 权限修饰符 类名一致的方法(参数列表) [异常]{方法体}
// 建议:若自定义带参数的构造方法,将系统提供的默认无参数构造方法一起写出来,构成构造方法的重载
public test(){
System.out.println("无参数构造方法");
}
public test(String name,int age,String sex){
// 创建对象
// name = name;//属性与变量重名了
// age = age;
// sex = sex;
this.name = name;// this代替创建出来的对象
this.age = age;
this.sex = sex;
System.out.println("姓名:"+name+", 性别:"+sex+", 年龄:"+age);
// 返回了这个创建的对象
}
public static void main(String[] args){
//调用test中构造方法
test t = new test("LSK",18,"男");
}
}
2.this既然代替的是对象,那this可以调用什么
1.this可以调用属性,方法
2.this调用构造方法只能在一个构造方法里调用另一个构造方法,写法会省略构造方法名,因为规定构造方法名必须与类名一致,而且必须在程序的第一行
3.this调用的过程可以放置在类中任何成员位置
package code;
public class test {
public String name;
public int age;
public String sex;
{
this.dowork();
System.out.println("普通的一个程序块1");
}
public test(){
System.out.println("无参数构造方法");
}
public test(String name,int age,String sex){
this();//省略了构造方法名
this.dowork();
this.name = name;// this代替创建出来的对象
this.age = age;
this.sex = sex;
System.out.println("姓名:"+name+", 性别:"+sex+", 年龄:"+age);
}
public void dowork(){
System.out.println("dowork方法");
}
public static void main(String[] args){
//调用test中构造方法
test t1 = new test("LSK",18,"男");
}
}
类中第四个成员 程序块(无修饰符,无参数,无返回值,无名字的方法)
1.作用:跟普通方法一样,是做事情的
2.写法:可以认为程序块是一个没有修饰符,没有参数,没有返回值,没有名字的特殊方法
3.用法:块也需要调用才能执行,我们自己调用不到(没有名字),每一次我们在调用构造方法之前,系统会帮我们自动调用一次程序块
4.特点:没有重载,但是可以创建多个程序块
5.想在创建对象之前执行某个操作就是用程序块
package code;
public class test {
public String name;
public int age;
public String sex;
{
System.out.println("普通的一个程序块1");
}
{
System.out.println("普通的一个程序块2");
}
{
System.out.println("普通的一个程序块3");
}
public test(String name,int age,String sex){
// 创建对象
// name = name;//属性与变量重名了
// age = age;
// sex = sex;
this.name = name;// this代替创建出来的对象
this.age = age;
this.sex = sex;
System.out.println("姓名:"+name+", 性别:"+sex+", 年龄:"+age);
// 返回了这个创建的对象
}
public static void main(String[] args){
//调用test中构造方法
test t1 = new test("LSK",18,"男");
test t2 = new test("LSK",18,"男");
}
}
总结:
类中四个成员:
1.属性----静态描述特征 权限修饰符 [特征修饰符] 属性类型 属性名字 [=值];
2.方法----动态描述行为 权限修饰符 [特征修饰符] 返回值类型 方法名字([参数列表]) [抛出异常] {[方法体]}
3.构造方法----创建当前类对象 权限修饰符 与类名相同的方法名([参数列表])[抛出异常]{方法体}
4.程序块----在构造方法之前调用的一个无修饰符,无参数,无返回值,无名字的方法
5.this关键字的使用:用来代替某个对象,可以调用一般属性或一般方法,放置在任何类成员中,可以调用构造方法,只能放在另一个构造方法内,只能放在程序的第一行