java类的成员之一:构造器(构造方法)

构造器的特征

        它具有与类相同的名称

        它不声明返回值类型。(与声明为void不同)

        不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值

构造器的作用:创建对象;给对象进行初始化

如:Order o = new Order(); Person p = new Person(“Peter”,15); 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自 动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们 要“洗澡”了

语法格式

修饰符 类名 (参数列表) { 初始化语句;}

举 例:public class Animal {

private int legs;

// 构造器 public Animal() {

legs = 4; }

public void setLegs(int i) {

legs = i; }

public int getLegs() {

return legs;}

}

 

创建Animal类的实例:Animal a = new Animal(); 调用构造器,将legs初始化为4。

 根据参数不同,构造器可以分为如下两类:

        隐式无参构造器(系统默认提供)

        显式定义一个或多个构造器(无参、有参)

注 意:

        Java语言中,每个类都至少有一个构造器

        默认构造器的修饰符与所属类的修饰符一致

        一旦显式定义了构造器,则系统不再提供默认构造器

        一个类可以创建多个重载的构造器

        父类的构造器不可被子类继承 

课程比代码如下:


/*
 * 类的结构之三:构造器(或构造方法、constructor)的使用
 * construct:建设、建造。  construction:CCB    constructor:建设者
 * 
 * 一、构造器的作用:
 * 1.创建对象
 * 2.初始化对象的信息
 * 
 * 
 * 二、说明:
 * 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
 * 2.定义构造器的格式:权限修饰符  类名(形参列表){}
 * 3.一个类中定义的多个构造器,彼此构成重载
 * 4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
 * 5.一个类中,至少会有一个构造器。
 */
public class PersonTest {
	public static void main(String[] args) {
		//创建类的对象:new + 构造器:Person()
		Person p = new Person();
		
		p.eat();
		
		Person p1 = new Person("Tom");
		
		System.out.println(p1.name);
		
		
	}
}

class Person{
	//属性
	String name;
	int age;
	
	//构造器(可以建多个构造器)
		//此构造器用来创建对象
	public Person(){
		System.out.println("Person().....");
	}
		//此构造器用来初始化对象的信息
	public Person(String n){
		name = n;
		
	}
//	
	public Person(String n,int a){
		name = n;
		age = a;
	}

	
	//方法
	public void eat(){
		System.out.println("人吃饭");
	}
	
	public void study(){
		System.out.println("人可以学习");
	}
	
}

练习:
 * 1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
 * 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
 * 
 * 2.练习2:
 * 2.1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
 * 2.2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。

源码一:

package com.atcording.exer;
/*
 * 1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
 * 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
 * 
 * 2.练习2:
 * 2.1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
 * 2.2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。

 * 
 */
public class Person {
	
	private int age;
	private String name;
	
	public Person(){
		age = 18;
	}
	
	public Person(String n,int a){
		name = n;
		age = a;
	}
	
	
	public void setAge(int a){
		if(a < 0 || a > 130){
//			throw new RuntimeException("传入的数据非法!");//后面学此语句
			System.out.println("传入的数据非法!");
			return;
		}

		age = a;
		
	}
	
	public int getAge(){
		return age;
	}
	
	
	public void setName(String n){
		name = n;
	}
	public String getName(){
		return name;
	}
	
}

源码二:

package com.atcording.exer;
/*
 * 在PersonTest类中实例化Person类的对象b,
 * 调用setAge()和getAge()方法,体会Java的封装性。
 * 
 */
public class PersonTest {
	public static void main(String[] args) {
		
		Person p1 = new Person();
//		p1.age = 1;编译不通过
		
		p1.setAge(12);
		
		System.out.println("年龄为:" + p1.getAge());
		
		
		Person p2 = new Person("Tom", 21);
		System.out.println("name = " + p2.getName() + ",age = " + p2.getAge());
		
	}
}

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值