26--构造方法(构造器)

构造方法概述

在面向对象程序中构造方法的主要主要作用就是为类的属性初始化。从之前学习的对象中可知,要产生一个类的对象,就必须使用一下格式:
类名称 对象名称 = new 类名称()
在程序中只要出现”()”就表示调用了方法,那么这个方法实际上就是表示要调用构造方法,构造方法可以视为一种特殊的方法,它的定义与普通方法类似。语法:
class 类名称{
访问权限 类名称(类型 参数1,类型 参数2,…){
程序语句;
…//构造方法没有返回值
}
}
构造方法的特点:

  1. 构造方法的名称必须与类名称一致
  2. 构造方法的声明处不能有任何返回值类型的声明
  3. 不能在构造方法中使用return返回一个值
  4. 不能被static、final、synchronized、abstract、native修饰
    构造器的作用:
    1.创建对象
    2.给对象进行初始化
    实例:
package com.qwy.bean;

class Person {
    
    
	public Person() {
    
    
		System.out.println("一个新的Person对象产生了");
	}
}
public class Demo{
    
    
	public static void main(String[] args) {
    
    
		Person per = new Person();
	}
}

运行结果:
一个新的Person对象产生了
当调用关键字new实例化对象是会调用构造方法。
在之前的类中并没有写构造方法,但是也可以调用??这里要注意:只要是类就必须存在构造方法,在java中如果以个类中没有明确的声明一个构造方法,则在编译时会直接生成一个无参的。什么都不做的构造方法。所以前面讲到的程序中即使没有构造方法,对象也是可以进行对象的实例化的。
在一个类中如果已经明确的声明了一个构造方法,此时程序在编译时就不会再生成默认的构造方法,即一个类中至少保证有一个构造方法存在。
通过构造方法为属性赋值:
实例:

package com.qwy.bean;
class Person {
    
    
	public String name;
	public int age;
	public Person(String name,int age) {
    
    
		this.name=name;
		this.age=age;
	}
	public void say(){
    
    
		System.out.println("姓名:"+name+"\t年龄:"+age);
	}
}
public class Demo{
    
    
	public static void main(String[] args) {
    
    
		Person per = new Person("张三",20);
		per.say();
	}
}

运行结果:
姓名:张三 年龄:20

注意:
1.Java语言中,每个类都至少有一个构造器
2.默认构造器的修饰符与所属类的修饰符一致
3.一旦显式定义了构造器,则系统不再提供默认构造器
4.一个类可以创建多个重载的构造器
5.父类的构造器不可被子类继(后期介绍)
构造方法的重载:
实例:
与普通方法一样,构造方法也是可以重载的,只要每个构造方法的参数类型或参数的个数不同即可。

package com.qwy.bean;
class Person {
    
    
	public String name;
	public int age;
	public Person() {
    
    
		// TODO Auto-generated constructor stub
	}
	public Person(String name){
    
    
		this.name=name;
	}
	public Person(String name,int age) {
    
    
		this.name=name;
		this.age=age;
	}
	public void say(){
    
    
		System.out.println("姓名:"+name+"\t年龄:"+age);
	}
}
public class Demo{
    
    
	public static void main(String[] args) {
    
    
		Person per = new Person("张三");
		per.say();
	}
}

运行结果:
姓名:张三 年龄:0
以上的类中构造方法被重载了3次,在主方法中调用的是只有一个参数的的构造方法,只是设置了姓名,没有设置年龄,因此年龄的默认值是0;
属性赋值过程:(先后顺序)

  1. 默认初始化
  2. 显式初始化
  3. 构造器中初始化
  4. 通过“对象.属性“或“对象.方法”的方式赋值

    ====================================================================================================
      自己也是最近才开始写文章,看到大家都分享自己的经验给别人。我也是受益者之一,做人不能只懂的索取而不去回馈,所以也将自己学习的知识分享给大家。我不能保证每个问题都讲的是对的,毕竟我也是个学习者。如果有地方写得不对或理解有误的,也希望大家给指出,我当非常感谢。编写过程也不易,也希望大家给个赞,关注下本人。这也能激励我继续分享。
      ====================================================================================================

猜你喜欢

转载自blog.csdn.net/qwy715229258163/article/details/114413624