java之构造方法全解

  • Post author:
  • Post category:java




1. 构造方法的定义

由Cylinder类所创建的对象,其

成员变量

都是在

对象建立之后,再由相应的方法来赋值

。如果一个

对象在被创建时



完成了所有的初始化工作

,将会很简洁。因此,Java语言在类里提供了一个特殊的成员方法——构造方法

这句话的意思就是说,构造方法地是一种在类的对象被实例化时就执行的方法,而不需要实例化之后在调用对象的方法对成员变量进行操作。这样的操作节约了时间。

构造方法(constructor)是一种特殊的方法,它是在对象被创建时初始化对象成员的方法



2. 构造方法特点

  • 方法的

    名称

    必须与

    类名

    完全相同
  • 没有返回值
  • 不能用void修饰

  • 实例化对象时要传入构造方法的形参值

类的构造方法的

返回值类型就是该类本身

。构造方法定义后,

创建对象时就会自动调用它

,因此构造方法不需要在程序中直接调用,而是在对象创建时自动调用并执行。这一点不同于一般的方法,一般的方法在用到时才调用。



被调用类(有参数的情况)

class Cylinder {
    private double radius;
    private int height;
    private double pi = 3.14;

    public Cylinder(double r,int h){   构造方法
        radius=r;
        height=h;
    }

    double area() {
        return pi * radius * radius;
    }
    double volume() {
        return height * area();
    }
}



主类

public static void main(String[] args) {

        Cylinder c = new Cylinder(3.5, 8);  传入参数
        System.out.println(c.area());
        System.out.println(c.volume());

    }



3. 构造方法重载(有参和无参的情况)

	构造方法如果不自己定义的话,java会默认一个无参无方法体的构造方法,所以实例化对象时,new后面的类()中不需要传参;
当自己定义了构造函数之后,就相当于覆盖了默认的构造方法。所以重载构造方法,一个有参数,一个无参数,则增加了编程的灵活性。



被调用类

class Cylinder {
    private double radius;
    private int height;
    private double pi = 3.14;
    String color;
    public Cylinder(double r,int h,String str){//有参构造函数
        color=str;
        radius=r;
        height=h;
    }

    public Cylinder()//无参构造函数
    {
        radius=1;
        height=2;
        color="红色";
    }
    public void SetColor()
    {
        System.out.println("圆柱体的颜色="+color);
    }
    double area() {
        return pi * radius * radius;
    }
    double volume() {
        return height * area();
    }
}



主类

public static void main(String[] args) {

        //有参数
        Cylinder c = new Cylinder(3.5, 8, "绿色");
        System.out.println(c.area());
        System.out.println(c.volume());
        c.SetColor();
        //无参数
        Cylinder c2 = new Cylinder();
        System.out.println(c2.area());
        System.out.println(c2.volume());
        c2.SetColor();

    }



4.从一个构造方法内调用另一个构造方法

利用这个方法,可缩短程序代码,减少开发程序时间。 从某一个构造方法内调用另一构造方法,是通过使用this()语句来调用的。



this()语句必须写在构造方法内的第一行位置

这种方法,还是在类中重载了构造方法,并定义了有参和无参两种。但是,区别在于先在无参构造方法里用 this()方法调用了有参构造方法。这样就使得实例化对象不传参时,自动调用无参构造方法,然后无参构造方法调用有参构造方法,形成这样一种调用逻辑:

主类->调用类->无参构造方法->有参构造方法



5.公共的构造方法与私有的构造方法

如果构造方法被声明为private,则无法在该构造方法所在的类以外的地方被调用,但在该类的内部还是可以被调用的。

主类

public static void main(String[] args) {

        //有参数
        Cylinder c2 = new Cylinder(1,2,"绿色");			调用有参构造方法
        System.out.println(c2.area());
        System.out.println(c2.volume());
        c2.SetColor();

    }

调用类

class Cylinder {
    private double radius;
    private int height;					主类调用Cylinder类中有参构造方法
    private double pi = 3.14;
    String color;
    public Cylinder(double r,int h,String str){//有参构造函数
        this();							有参构造方法调用无参构造方法
        color=str;
        radius=r;
        height=h;										实现了外部类调用内部私有方法的操作
        System.out.println("有参构造方法被调用了");
    }

    private Cylinder()//无参构造函数
    {
        System.out.println("无参构造方法被调用了");
    }
    public void SetColor()
    {
        System.out.println("圆柱体的颜色="+color);
    }
    double area() {
        return pi * radius * radius;
    }
    double volume() {
        return height * area();
    }
}



版权声明:本文为qq_43401942原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。