JAVA基础知识回顾_2_构造方法

构造方法:构造方法是一种特殊的方法。主要功能是用来在创建对象时初始化对象,即为对象成员变量赋初始值。构造方法与类名相同,可重载多个不同的构造方法。

主要注意事项为三点:

(1)构造方法的方法名必须与类名相同。

(2)构造方法没有返回值类型,也不能定义为void,在方法名前面不声明方法类型。

(3)构造方法的主要作用是完成对象的初始化工作。

与方法的重载是一样的,构造方法也是可以重载的,构造方法的形参不同即可(关于方法的重载详见“JAVA基础知识回顾_2”)。

/**
 * 构造方法
 * @author Zjm
 *
 */
public class GouZao {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		one o1 = new one();
		one o2 = new one("World");
		o1.run();
		o2.run();
	}

}
class one{
	String a;
	String b;
	int c;
	public one() {}
	public one(String s) {
		this.a = s;
	}
	public void run() {
		System.out.println("Hello " + this.a);
	}
}

如上代码,publicone (){}即为class one 的无参构造方法,publicone (String s){}即为public one (){}一个覆写方法,也是class one的有一个String类型参数的构造方法。

在创建one 的实例化对象o1时,系统会调用class one 的无参构造方法。创建o2时就会调用class one的有一个String类型参数的构造方法。而该类的无参构造方法并没有给this.a赋值,有一个String类型的参数的构造方法给this.a赋值了,所以这段代码运行结果为

        Hello null

        Hello World

提示   如果用户没有自定义类的构造方法,系统将自动创建一个该类的无参的,方法体为空的构造方法,自动调用。

如下代码

/**
 * 构造方法
 * @author Zjm
 *
 */
public class GouZao {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		one o1 = new one();
		o1.run();
	}

}
class one{

	public void run() {
		System.out.println("我爱JAVA");
	}
}

系统在创建o1时,没有找到用户自定义的构造方法,便会调用一个无参的,方法体为空的构造方法,这段代码的运行结果为

     我爱JAVA

/**
 * 构造方法
 * @author Zjm
 *
 */
public class GouZao {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		one o1 = new one("张三","男",20);
		one o2 = new one("李四","女",19);
		o1.run(o2);
	}

}
class one{
	String name;
	String sex;
	int age;
	public one (String name,String sex,int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public void run(one o) {
		System.out.println("姓名: " +this.name+ " 性别: " + o.sex + " 年龄: " + o.age);
	}
}

这段代码,主要是构造方法是实例化对象是可以作为参数进行传递的,比如o.sex可以理解为o2.sex,就是调用的o2中的sex

而this.name就是o1.name,所以这段代码运行结果为:

     姓名: 张三 性别: 女 年龄: 19

下面两段代码分享,是构造方法的练习题,可以参考。

1

package com.zjm.www.day10;
/**
 * 
 * 构造方法-动物练习
 * @author Zjm
 *
 */
public class Ex_animal {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Animal an1 = new Animal("兔子","草",5);
		Animal an2 = new Animal();
		Animal an3 = new Animal(an1,an2);
		an2.all(an3);
	}
}
class Animal{
	String name;
	String eat;
	int weight;
	public Animal() {
		this.name = "name";
		this.eat = "猪蹄";
		this.weight = 12;
	}
	public Animal(Animal a,Animal b) {
		this.name = b.name;
		this.eat = a.eat;
		this.weight = b.weight;
		
	}
	public Animal(String name,String eat,int weight) {
		this.name = name;
		this.eat = eat;
		this.weight = weight;
	}
	public Animal(String name,int weight) {
		this.name = name;
		this.weight = weight;
	}
	public void eat1() {
		System.out.println("这个动物喜欢吃" + this.eat);
	}
	public void run() {
		System.out.println("这个动物会跑");
	}
	public void all(Animal an) {
		System.out.println("这是一只 " + this.name + ",它喜欢吃 " + an.eat + ",它重 " + an.weight +" 斤");
	}
}

2

public class Test {
	public static void main(String[] args) {

		Animal dog = new Animal("小黑", "小猫", "黑色");
		Animal cat = new Animal("小白", "小狗", "白色");
		String s = dog.play(cat, dog);
		System.out.println("获胜的动物是" + s);
	}
}

class Animal {
	String name;
	String kind;
	int age;
	String color;
	long animalID;
	String date;

	public Animal(String name, String kind) {
		this.name = name;
		this.kind = kind;
	}

	public Animal(String name, String color, String kind) {
		this.name = name;
		this.color = color;
		this.kind = kind;
	}

	public Animal(String name, int age, long animalID) {
		this.age = age;
		this.animalID = animalID;
	}

	public String play(Animal dog, Animal cat) {
		System.out.println("这只" + dog.color + "是" + dog.name + "," + dog.kind + ",正在和那只" + cat.color + "叫做" + cat.name
				+ "," + cat.kind + ",在打架");
		return cat.kind;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值