Java学习笔记 类的特性:构造方法

本文详细介绍了Java中的构造方法,包括其作用、特点、调用方式、重载和默认构造方法。构造方法用于初始化类的对象,无返回值且名称与类名相同。通过new关键字调用构造方法来创建并初始化对象。构造方法可以重载以创建不同状态的对象,当自定义构造方法后,系统将不再提供默认构造方法。示例代码展示了构造方法的使用,包括带参数和不带参数的情况。
摘要由CSDN通过智能技术生成
  1. 构造方法
    构造方法(Constructor),构造器,构造函数

    类中必定有构造方法,若不写,系统自动添加无参构造方法。

    构造器方法的方法名与类名相同

    没有返回值,也不能有void
    没有返回值不同于void,构造方法的返回值就是该类本身

    构造方法可带参数也可不带,带参数可以完成赋值操作
    还能完成如检查参数合法性等操作

class Rectangle {
    private int width, length;
    Rectangle(int width,int length){
        this.width = width;
        this.length = length;
    }
    //这个Rectangle就是构造方法

    int Area() {
        return width*length;
    }
    void printArea(){
        System.out.println("area="+Area());
    }
}
  1. 构造方法的调用
    调用规则:不能由编程人员显示调用,而用new来调用
    作用:在对象被初始化时初始化对象的成员
public class example{
    public static void main(String[] args) {
        Rectangle r1 = new Rectangle(3,4);
        r1.printArea();
    }
}
  1. 构造方法的重载

    构造方法重载:形式同普通方法重载,调用形式则不同
    作用:重载的构造方法可以构造出不同的对象

class Rectangle {
    private int width, length;
    Rectangle(int width,int length){
        this.width = width;
        this.length = length;
    }
    Rectangle(){
        width = 5;
        length = 6;
    }
    int Area() {
        return width*length;
    }
    void printArea(){
        System.out.println("area="+Area());
    }
}

public class example{
    public static void main(String[] args) {
        Rectangle r1 = new Rectangle(3,4);
        Rectangle r2 = new Rectangle();
        //r1和r2就是两个不同的矩形对象
        r1.printArea();
    }
}
  1. 默认构造方法

    默认构造方法:如果用户没有定义,系统就会提供一个无参的构造方法


class Rectangle {
    public int width, length;
    //public RectangleP(){};
    //系统会自动创建调用这样一个,默认构造方法
    int Area() {
        return width*length;
    }
    void printArea(){
        System.out.println("area="+Area());
    }
}

public class example{
    public static void main(String[] args) {
        Rectangle r1 = new Rectangle();
        r1.printArea();
    }
}

默认规则:一旦为某类定义了构造方法,系统就不再提供默认构造方法。
默认构造方法么有形参,没有任何语句,不完成任何操作
若class有public修饰符,则默认构造方法前也是public

public class Hello {
    /*public Hello()
    {}加入这个就正确*/
    Hello(int a)
    {
        System.out.println(a);
    }

    public static void main(String[] args) {
        Hello h = new Hello();//错误
        //因为定义了构造方法,系统就不再提供默认构造方法。
    }
}

编程训练

class contrast{
    contrast(int a,int b){
        if(a>b)
            System.out.println(a);
        else
            System.out.println(b);
    }
    contrast(float a,float b,float c){
        System.out.println(a*b*c);
    }
}

public class train {
    public static void main(String[] args) {
        contrast c1 = new contrast(2,1);
        contrast c2 = new contrast(2.1f,3.2f,4.3f);
        //要加f不然默认double类型
    }

}

在这里插入图片描述

注意参数是float类型要加F,不加F默认是double类型,取值范围从大范围(double)向小范围(float)需要强制转换,报错如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值