Java中类的成员之三:构造器(构造方法)

简介: Java中类的成员之三:构造器(构造方法)

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


构造器(construct)

构造器的特征
  1. 它具有与类相同的名称
  2. 它不声明返回值类型。(与声明为void不同)
  3. 不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值
构造器的作用:
  1. 创建对象
  2. 给对象进行初始化
  • 如:Order o = new Order(); Person p = new Person(“Peter”,15);
  • 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自 动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们 要“洗澡”了。
说明(重点复习)
  1. 如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器
  2. 定义构造器的格式:权限修饰符 类名(形参列表){}
  3. 一个类种定义的多个构造器,彼此构成重载
  4. 一旦我们显示的定义了类的构造器之后,系统不再提供默认的空参构造器
  5. 构造器的权限默认和类相同

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

  • 隐式无参构造器(系统默认提供)
  • 显式定义一个或多个构造器(无参、有参)

注 意:

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

public class A {
    public static void main(String[] args) {
        //创建类的对象:new +构造器
        Person p1 = new Person();
        p1.eat();
        Person p2=new Person("tom");
        System.out.println(p2.name);//运行结果:tom
    }
}
class Person{

    //属性
    String name;
    int age;

    //构造器
    public Person(){
        System.out.println("构造器");
    }
    //构造器(作用:给对象初始化)
    public Person(String a){
        name = a;//相当于new对象的时候就可以给name赋值
    }
    //方法
    public void eat(){
        System.out.println("人吃饭");
    }
}

练习题

练习题1:

题目:

  1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属 性初始值都为18。
  2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同 时初始化对象的age属性值和name属性值。

代码:

package GouZaoQi;
//1.在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
//2.修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
public class LXT {
    public static void main(String[] args) {
        Person2 p1 = new Person2("tom",9);
        System.out.println("name="+p1.getName()+",age="+p1.getAge());//运行结果:name=tom,age=9
    }
}
class Person2{
     private int age;
     private String name;
    public Person2(){
        age =18;
    }
    public Person2(String n,int a){
        name=n;
        age=a;
    }

    public void setName(String n) {
        name = n;
    }
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
练习题2:

题目:

​ 编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底边长base和高height,同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。

代码:

TriAngle

package GouZaoQi;
//编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底
//边长base和高height,同时声明公共方法访问私有变量。此外,提供类
//必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
public class TriAngle {
    //属性
    private double base;
    private double height;
    //构造器

    public TriAngle(double b,double h){
        base=b;
        height=h;

    }
    //方法
    public double getBase(){
        return base;
    }
    public double getHeight(){
        return height;
    }
}

TriAngleTest

package GouZaoQi;
//编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底
//边长base和高height,同时声明公共方法访问私有变量。此外,提供类
//必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
public class TriAngleTest {
    public static void main(String[] args) {
        TriAngle t1 = new TriAngle(4, 5);
        System.out.println("三角形面积为:"+t1.getBase()*t1.getHeight()/2);
    }
}
目录
相关文章
|
2月前
|
Java 程序员 C#
静态构造方法解析,Java新手必看技能
静态构造方法解析,Java新手必看技能
14 0
|
2月前
|
Java C++ Python
构造方法执行过程:揭秘Java代码背后的秘密
构造方法执行过程:揭秘Java代码背后的秘密
11 0
|
2月前
|
Java
JAVA构造方法
JAVA构造方法
15 0
|
3月前
|
人工智能 运维 Java
Java8新特性:方法引用与构造器引用
Java8新特性:方法引用与构造器引用
34 0
|
4月前
|
Java API
Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
44 0
|
4月前
|
存储 Java 数据库连接
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段4
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段
28 0
|
4月前
|
Java API
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段3
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段
38 0
|
4月前
|
Java 应用服务中间件 API
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段1
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段1
68 0
|
4月前
|
存储 Java 编译器
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段2
Java 编程问题:七、Java 反射类、接口、构造器、方法和字段2
51 0
|
4月前
|
Java
【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)
【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)
18 0