java-深入构造方法

来源:互联网 发布:日本动漫知子 编辑:程序博客网 时间:2024/06/08 09:17

构造方法之前我们就学过,这次我们用构造方法实例化我们的成员变量,代码如下

这里写图片描述
这里写图片描述
结果:
这里写图片描述
构造方法重载
构造方法也属于方法,是一种特殊的方法,一个没有返回值的方法。既然属于方法,那么它也有方法的重载,到这我们在说一下重载,重载:方法名相同,返回值类型或形参个数不同。构造方法重载代码如下所示:
这里写图片描述
this关键字
之前我们学过this的其他使用
第一种 指 当前类.成员变·量 ,在get,set里最常用
第二种 指当前类.方法 当前类调用其他方法
this的第三种使用方式,必须写在构造方法中,否则报错,提示找不到
代码如下:
这里写图片描述
this(12,”lisi”)这个主要是干了一件调用Test3()这个构造方法,把参数传递了过去,我们在写一个show方法打印一下数据。
这里写图片描述
在Test中调用
这里写图片描述
结果:
这里写图片描述
构造方法进行数据初始化
之前说过,在new类,对此类进行初始化,其实调用的是类里面无参的构造方法,但是里面获取的数据都是默认值。构造器除此之外我们用最多的用法是对其数据进行初始化。
例:
public class Person {
//两个成员变量name age
private String name;
private int age;
/*
* 构造方法
* @param name 姓名
* @param age 年龄
*/
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}

public static void main(String[] args) {    Person p=new Person("李四",12);    System.out.println("name的值是:"+p.name);    System.out.println("age的值是:"+p.age);}

}
结果
这里写图片描述
注意:一旦我们创建有参数的构造方法,我们就不能通过new Person()来创建实例了,因为该类不再包含无参的构造方法。
构造方法的重载
构造方法也属于方法,方法有重载,那么构造方法也有。同一个类中可以有多个构造方法,多个构造方法的形参不同既成为构造方法重载。
例如:
public class Person {
//两个成员变量name age
private String name;
private int age;
/*
* 构造方法
* @param name 姓名
* @param age 年龄
*/
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}

/*** * 无参构造方法 */public Person(){    System.out.println("这是父类的构造方法");}public static void main(String[] args) {    Person p=new Person("李四",12);    System.out.println("name的值是:"+p.name);    System.out.println("age的值是:"+p.age);    Person p1=new Person();    System.out.println("name的值是:"+p1.name);    System.out.println("age的值是:"+p1.age);}

}
结果:
这里写图片描述
3.构造方法this的使用
之前可以使用this调用当前类的成员变量和方法(),除此之外this还可以调用当前类的构造方法,前提是必须在构造方法中使用。
例:
public class Person {
// 两个成员变量name age
private String name;
private int age;

/** * 一个参数的构造方法 *  * @param age *            年龄 */public Person(int age) {    this.age = age;}/*** * 两个参数的构造方法 *  * @param name *            姓名 * @param age *            年龄 */public Person(String name, int age) {    this(age);    this.name = name;}/*** * 无参构造方法 */public Person() {    System.out.println("这是父类的构造方法");}public static void main(String[] args) {    Person p = new Person(12);    System.out.println("p.name的值是:" + p.name);    System.out.println("p.age的值是:" + p.age);    Person p1 = new Person("李四",14);    System.out.println("p1.name的值是:" + p1.name);    System.out.println("p1.age的值是:" + p1.age);}

}

结果:
这里写图片描述