java中构造方法的使用

java中构造方法的使用

一.前言:

一个新对象初始化的最终步骤是通过new关键字去调用对象的构造方法,构造方法必须满足以下几个条件:

  • 方法名必须与类名完全匹配
  • 不要声明返回类型
  • 不能被static, final, synchronized, abstract,native修饰,且没有return语句返回值

二.构造方法的种类:

根据参数的不同,构造方法又分为以下三类:

  1. 隐式无参构造方法:在定义类的时候如果类体没有给类定义一个构造方法,Java编译器会在编译的时候默认提供一个隐式无参的构造方法。在main方法中可以通过new关键字来调用此默认的构造方法。

public class Person{
	
	private String name;
	private boolean gender;
	private int age;
	public void speak(String word) {
		System.out.println(name+"说:"+word);
	}
	public void tread() {
		System.out.println("走路");
	}
	public static void main(String[] args) {
		Person person=new Person();
		person.speak("Hello");
		person.tread();
		
	}
}

主方法里面创建了一个person对象,直接调用系统提供的一个隐式无参构造方法,由于没有给name赋值,所以系统默认初始化为null
主方法里面创建了一个person对象,直接调用系统提供的一个隐式无参构造方法,由于没有给name赋值,所以系统默认初始化为null。

2.显示无参构造方法:


public class Person{
	
	private String name;
	private boolean gender;
	private int age;
	public Person(){
		System.out.println("我是显示无参构造方法");
	}
	public void speak(String word) {
		System.out.println(name+"说:"+word);
	}
	public void tread() {
		System.out.println("走路");
	}
	public static void main(String[] args) {
		Person person=new Person();
		person.tread();
		
	}
}

在这里插入图片描述

3.显示有参构造方法:


public class Person {
	private String name;
	private boolean sex;
	private int age;
	public Person(String n,boolean b,int a) {  //参数化的构造
		name=n;
		sex=b;
		age=a;
		
	}
	 Person(){     //无参构造
		 System.out.println("我是显示无参构造方法");
	 };
	 public void speak(String word) {    
		 System.out.println(name+"说:"+word);
	 }
	 

	public static void main(String[] args) {
		Person A=new Person("Alex",true,18);  
	   	A.speak("Hello");
			 
	}

}

在这里插入图片描述

在主方法里面创建对象的时候,直接将三个参数赋值给了对象的属性,可以说直接起到了一个初始化的作用。

三.注意事项:

  1. 类中可以定义一个无参构造方法和一个显示有参构造方法,在创建一个对象时可以有选择性地使用。

public class Person {
	private String name;
	private boolean sex;
	private int age;
	public Person(String n,boolean b,int a) {  //参数化的构造
		name=n;
		sex=b;
		age=a;
		
	}
	 Person(){     //无参构造
		 System.out.println("我是显示无参构造方法");
	 };
	 public void speak(String word) {    
		 System.out.println(name+"说:"+word);
	 }
	 

	public static void main(String[] args) {
		//Person A=new Person("Alex",true,18);  
			Person A=new Person(); //使用无参构造方法
			A.name="Alex";
	   	A.speak("Hello");
			 
	}

}

在这里插入图片描述

由于选择的是无参构造方法,因此需要给对象的name属性赋值为Alex

2.如果类中有一个自己编写的构造方法,编译器就不会再提供那个默认的构造方法,此时如果还希望用默认的构造方法来创建类的对象时,那么就必须在类中明确添加这个默认构造方法,否则编译会报错。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值