【java学习】类的成员之三:构造方法(即构造器)(25)

文章目录

  • 1. 构造器(构造方法)基本概念
  • 2. 语法格式
  • 3. 构造器(构造方法)的种类
  • 4. 从代码中理解构造函数
  • 5. 练习题
    • 5.1. 题目1
    • 5.2. 题目2
    • 5.3. 题目3


1. 构造器(构造方法)基本概念

  1. 构造器的特征
    (1) 它具有与类相同的名称
    (2) 它不声明返回值类型。(与声明为 void 不同)
    (3) 不能被staticfinalsynchronizedabstractnative修饰,不能有return 语句返回值

  2. 构造器的作用:①创建对象;②给对象进行初始化
    (1) 如:Order o = new Order();Person p = new Person(Peter,15);
    (2) 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。

2. 语法格式

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

举例:

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 。

3. 构造器(构造方法)的种类

根据参数不同,构造器可以分为如下两类:
    (1) 隐式无参构造器(系统默认提供)
    (2) 显式定义一个或多个构造器(无参、有参)

注意:
    (1) Java 语言中,每个类都至少有一个构造器
    (2) 默认构造器的修饰符与所属类的修饰符一致
    (3) 一旦显式定义了构造器,则系统不再提供默认构造器
    (4) 一个类可以创建多个重载的构造器
    (5) 父类的构造器不可被子类继承

标重点:new对象 实际上就是调用 类的构造方法!

4. 从代码中理解构造函数

(1) 在显示构造方法中使用设定的默认值
创建一个Person5类:

package day06;

public class Person5 {
	/**
	 * 如果显示的定义了构造方法,那么就会使用显示的构造方法
	 */
	public Person5() {   //构造方法
		age = 1;            //设定的age默认值1
		name = "zhangsan";  //设定的name默认值zhangsan
	}
	
	public int age;
	public String name;
	public void showInfo() {
		System.out.println(age);
		System.out.println(name);
	}

}

编写Test.java调用Person5方法:

package day06;

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

		Person5 p5 = new Person5(); //new就是调用构造方法的过程
		p5.showInfo();
	}

}

运行结果:
【java学习】类的成员之三:构造方法(即构造器)(25)_第1张图片
这个运行结果说明带调用了显示的构造方法

(2) 在调用构造方法过程,根据需要自己设定值

创建一个Person5类:

package day06;

public class Person5 {
	/**
	 * 可以写 带参数的构造方法
	 */
	public Person5(int a,String n) {   //给构造方法的 参数列表 添加 两个形参
		age  = a;
		name = n;
	}
	
	public int age;
	public String name;
	public void showInfo() {
		System.out.println(age);
		System.out.println(name);
	}

}

编写Test.java调用Person5方法:

package day06;

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

		Person5 p5 = new Person5(2,"lisi"); //在new对象时,同样给参数列表的形参赋值
		p5.showInfo();
	}

}

运行结果:
在这里插入图片描述

5. 练习题

5.1. 题目1

  1. 在前面定义的 Person 类中添加构造器,利用构造器设置所有人的 age 属性初始值都为 18 。

答案1:

package day06;

public class Person6 {
	
	public Person6() { //构造器
		age = 18;
	}
	
	public int age;

}

Test.java

package day06;

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

		Person6 p6 = new Person6();
		System.out.println(p6.age);   //运行Test.java后,输出构造方法中age的默认值18
	}

}

5.2. 题目2

  1. 修改上题中类和构造器,增加 name 属性 , 使得每次创建 Person 对象的同时初始
    化对象的 age 属性值和 name 属性值。
    【java学习】类的成员之三:构造方法(即构造器)(25)_第2张图片
    答案2:
package day06;

public class Person6 {
	
	public Person6(int a, String n) {
//		age = 18;
		age = a;
		name = n;
	}
	
	public int age;
	public String name;
}

Test.java

package day06;

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

		Person6 p6 = new Person6(12,"zhangsan");
		System.out.println(p6.age);
		System.out.println(p6.name);
	}

}

Test.java运行结果:
【java学习】类的成员之三:构造方法(即构造器)(25)_第3张图片

5.3. 题目3

  1. 定义一个“点”( Point )类用来表示三维空间中的点(有三个坐标)。要求如下:
    (1) 可以生成具有特定坐标的点对象。
    (2) 提供可以设置三个坐标的方法。

答案:

package day06;

public class Point {    // 要求(1)
	public Point(int m, int n, int k) {
		x = m;
		y = n;
		z = k;
	}
	
	int x;
	int y;
	int z;
	
	public void setPoint(int m, int n, int k) {    //要求(2)
		x = m;
		y = n;
		z = k;
	}

}

你可能感兴趣的:(java学习,java,学习,开发语言)