Java基础 类中的构造方法

Java基础 类中的构造方法

Java类中的构造方法,又被称为构造函数/构造器/Constructor,它的语法结构为:
[修饰符列表] 构造方法名(形式参数列表){
    构造方法体;
}
普通方法语法结构:
[修饰符列表] 返回值类型 方法名(形式参数列表){
    方法体;
}

对于构造方法来说,“返回值类型”不需要指定,并且也不需要void,写上void就属于普通方法!构造方法的方法名必须要和类名保持一致。

构造方法的作用? 通过构造方法,可以创建对象 构造方法调用? 普通方法:方法修饰符中有static的时候》类名.方法名(实参列表);方法修饰符列表中没有static的时候》引用.方法名(实参列表) 构造方法:new 构造方法名(实参列表) 构造方法调用执行后有返回值吗? 每一个构造方法执行行结束之后都有返回值,但是这个“return 值;”不需要写,构造方法结束的时候java程序自动返回值。并且返回值类型是构造方法所在的类的类型。 构造方法User:
public class User {
	public User() {
		System.out.println("鳄鱼君");
	}
}
调用User:
public class ConstructorTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//调用User类的构造方法来完成对象的创建
		new User();// 执行构造方法
	}

}
当一个类中没有定义任何构造方法的时候,系统默认给该类提供一个无参数的构造方法,这个构造方法称为缺省构造器 当一个类显示的构造方法定义出来的时候,呢么系统则不再默认为这个类提供缺省构造器,建议手动为当前类提供无参数构造的方法
public class User {
	public User(){
		System.out.println("无参数构造方法");
	}
	
	// 定义一个带参数的构造方法
	public User(String name){
		System.out.println("欢迎回来 :" + name);
	}
}
public class ConstructorTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//调用带参数的构造方法
		new User("鳄鱼君");// 执行构造方法
		
		new User();
	}

}
构造方法支持重载机制,在一个类当中编写多个构造方法,这多个构造方法已经构成方法重载机制
public class User {
	public User() {
		System.out.println("无参数构造方法");
	}

	// 定义一个带参数的构造方法
	public User(String name) {
		System.out.println("带有String参数的构造器");
	}

	public User(int name) {
		System.out.println("带有int参数的构造器");
	}

	public User(int i, String name) {
		System.out.println("带有int,String参数的构造器");
	}
}
public class ConstructorTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//创建User对象
		User u1 = new User();
		User u2 = new User("鳄鱼君");
		User u3 = new User(10); 
		User u4 = new User(10,"鳄鱼君");
		
	}

}
构造方法的另一个作用:创建对象的同时,初始化实例变量的空间
//用户类
public class User {
	// 无参数构造方法
	public User() {
		// 初始化实例变量的内存空间
		// 相当于
		num = 0;
		name = null;
		age = 0;
	}

	// 有参数构造器
	public User(int a, String b, int c) {
		num = a;
		name = b;
		age = c;
	}

	// 学号
	public int num;

	public void setNum(int num) {
		if (num < 0 || num > 100000) {
			return;
		}
		this.num = num;
	}

	public int getNum() {
		return num;
	}

	// 姓名
	public String name;

	public void setName(String name) {

		this.name = name;
	}

	public String getName() {
		return name;
	}

	// 年龄
	public int age;

	public void setAge(int age) {
		if (age < 0 || age > 100) {
			return;
		}
		this.age = age;
	}

	public int getAge() {
		return age;
	}

}
public class ConstructorTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建一个user1对象
		// 查看对象访问的是那个属性:Ctrl + 鼠标移到该方法上单击
		User user1 = new User();
		// user1.setNum(1110); Ctrl + 鼠标放到setNum上单击
		
		System.out.println("学号:" + user1.num);// 0
		System.out.println("姓名:" + user1.name);// null
		System.out.println("年龄:" + user1.age);// 0
		
		User user2 = new User(10201,"鳄鱼君",18);
		// user1.setNum(1110); Ctrl + 鼠标放到setNum上单击
		
		System.out.println("学号:" + user2.num);// 10201
		System.out.println("姓名:" + user2.name);// 鳄鱼君
		System.out.println("年龄:" + user2.age);// 18

	}

}
分享到 :

发表评论

登录... 后才能评论