java中构造方法及其作用
1.形式:与类名相同, 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:
public 类名称(参数类型 参数名称){
方法体
```java
class Person{
public Person(){
}
}
下面这种形式是普通的方法
```java
public void Person(){
}
2…引入
3…作用:
- 构造方法作用就是对类进行初始化。 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法,如:class a {}//没有任何构造函数。
数据的来源有两种:
1.外部传入进来(通过构造方法的参数)
2.在内部写死~
- 构造方法就是与类同名的那个方法,它的作用是可以用来初始化,例子如下
class Person //人类{
public Person //无参构造方法,系统默认
{
}
public Person(String n,int a) //构造方法
{
name = n; age = a;
}
private string name;
private int age;
}
class Main{
public static void main(String[] args){
Person q = new Person();/
Person p = new Person("张三",14);//这就是作用
}
}
- new一个对象的时候要用到构造函数,上述Mian类中new Person(“张三”,14);
例如Person q = new Person());这时调用的是Person的无参数构造方法;
Person p = new Person(“张三”,14);;这个是调用Person有参数构造方法, - 在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.此时,若想调用无参构造方法,就需要定义一个无参构造方法。
如果Person类中已经有了一个有参数的构造方法,这时再使用 Person q = new Person()来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法.
4…构造方法特征
java中构造方法对类初始化
1.构造方法的方法名和类名相同
2.构造方法没有返回值(没有return语句,但是可以理解成返回了对象本身)
3.构造方法不需要显示的调用,而是在new的时候自动被调用
4…每一个类中一定至少存在一个构造方法,如果没有明确定义,则系统自动生成一个无参的构造方法
public class Test {
public int a;
public short b;
public long c;
public Test( int num){
a=num;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个整数:");
int num=scanner.nextInt();
Test test =new Test(num);
System.out.println(test.a);
}
}
5.构造方法重载
注意事项:
1.构造方法的名称必须和所在类的名称完全一样。
2.构造方法不要写返回值类型,连void都不写
3.构造方法不能return 一个具体的返回值。 4.如果没有编写任何构造方法,那么编译器将赠送一个构造方法,没有参数,方法体什么也不做。 public Student(){}
5.一旦编写了至少一种构造方法,那么编译器将不再赠送。
6.构造方法也是可以重载的。
重载:方法名称相同,参数列表不同
```java
public class Student {
//成员变量
private String name;
private int age;
//无参数的构造方法
public Student(){
System.out.println("无参构造方法执行啦");
}
//全参数的构造方法
public Student (String name,int age){
System.out.println("全参构造方法执行啦");
this.name=name;
this.age= age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}
public class Demo01Person {
public static void main(String[] args) {
Person person =new Person();
//设置自己的名字
person.name="王健林";
person.sayHello("王思聪");//who 自动出现
}
}
构造方法可以使用alt+Insert,也可以自己写
alt+Insert 生成构造方法,是最通用的版本,构造方法的目的是为了初始化数据,
具体初始化的数据:可以通过参数列表传到构造方法,也可以直接在构造方法写
package BookSystem;
//通过这个类把多个Book对象组织
public class BookList {
//100是数组的最大容量
private Book[] books =new Book[100];
//当前数组的数量
private int size=0;
//这里为啥不用alt+Insert 生成构造方法了?
//alt+Insert 生成构造方法,是最通用的版本,构造方法的目的是为了初始化数据,
//具体初始化的数据:可以通过参数列表传到构造方法,也可以直接在构造方法写
public BookList(){
books[0]=new Book("三国演义","罗贯中",100,"古典小说");
books[1]=new Book("西游记","吴永恩",100,"古典小说");
books[2]=new Book("金瓶梅","兰陵笑笑生",100,"古典小说");
}
}