JAVA基础/构造方法

来源:互联网 发布:西北大学知行学院 编辑:程序博客网 时间:2024/05/29 09:22

构造方法定义:

在Java中,任何变量在被使用前都必须先设置初始值。Java提供了为类的成员变量赋初始值的专门方法

注意:

1 他具有与类名相同的名称

2 他没有返回值

构造方法作用:

1 构造出来一个类的实例。

2 对构造出来的类的实例初始化。

3 构造方法的调用是在创建一个对象时new操作进行的。

4 类中必定有构造方法,若不写,系统自动添加无参数的构造方法。接口不允许被实例化,多以接口中没有构造方法。

5 不能被 static,final,synchronized,abstract 和native修饰。

6  构造方法问为俩种:无参构造方法,有参构造方法

    构造方法可以被重载。没有参数的构造方法称为默认构造方法。与一般的方法一样,构造方法可以进行任何活动,

    常为使用的是初始化对象的属性。

7   自定义类中,如果不写构造方法,java系统会默认添加一个无参数的构造方法。如果写了一个有参数的构造方法,

     可以不用写无参的构造方法。

      如果想使用无参的构造方法,就必须手动给出无参的构造方法。

基本构造方法的使用

例:

java_ex06.java

public class java_ex06 {
public static void main(String[] args){
Person06 person06 = new Person06();
}
}
class Person06{
public Person06(){  // Person06类的构造方法
System.out.println("Person06");
}
}

解析:

实例化了Person06 类的对象person06 ,此时会自动调用Person06 中的无参构造方法,打印信息。

在类中声明的构造方法,会在实例化对象时自动调用。

实际上,如果在程序中没有明确声明构造方法的话,系统会自动为类加入一个无参的且什么都不做的构造方法。类似与

public Person06 (){}

所以,之前所使用的程序虽然没有明确声明构造方法,也是可以正常运行的。

构造方法的重载

例:java_ex07.java

public class java_ex07 {
public static void main(String[] args){
Person07 person07 = new Person07("xiaowang",25);
System.out.println(person07.talk());
}
}
class Person07{
private String name;
private int age;
public Person07(String n,int a){
name = n;
age = a;
System.out.println("public Person07(String n,int a)");
}
public String talk(){
return "my name:" + name + "my age: " + age;
}
}

解析:

如果上面的例子中

Person07 person07 = new Person07("xiaowang",25);这个部分变成 Person07 person07 = new Person07();的话就会报错。

这个错误是说找不到Person07类的无参构造方法。记得前面曾经提过,如果程序中没有声明构造方法,程序就会自动声明一个无参的

且什么都不做的构造方法,可是现在却发生了找不到无参构造方法的问题。 

这是因为已经声明了构造方法的情况下,(无论有参有否)则默认的构造方法将不会自动生成。而要解决这一问题,只需要简单的修改一下Person07类就可以了。

可以在Person07类中明确的声明一个无参的且什么都不做的构造方法。

public class java_ex07 {
public static void main(String[] args){
Person07 person072 = new Person07();
Person07 person07 = new Person07("xiaowang",25);
System.out.println(person07.talk());
}
}
class Person07{
private String name;
private int age;
public Person07(){};
public Person07(String n,int a){
name = n;
age = a;
System.out.println("public Person07(String n,int a)");
}
public String talk(){
return "my name:" + name + "my age: " + age;
}
}

这样一来就不会报错了。


原创粉丝点击