首页 > 解决方案 > 如何在一个类中有多个构造函数?

问题描述

我想在一个类中有两个构造函数,但我不能。我知道这是可能的,但我找不到我的错误。

     public static class Matrix{
        int [][] matrix;
        int row;
        int column;
        String matrixName;
        Matrix (String [] input, String name) {
            matrixName = name;
            column = input.length;
            row = input[0].split(",").length;
            matrix = new int [row][column];
            initialize(input);
        }

        Matrix (Matrix A, char ch) {
            if (ch == 'T'){
                column = A.row;
                row = A.column;
            }
            else{
                column = A.column;
                row = A.row;
            }
            matrix = new int[row][column];
            matrixName = "result";
        }

第二个Matrix不能定义为构造函数。

标签: javaclassconstructor

解决方案


第二个构造函数没有问题。问题在于声明的第一行是public static class Matrix. 请注意,您不能static在此处使用修饰符。只有public,abstractfinal是允许的。

更正后,您可以按如下方式测试您的课程:

class Matrix {
    int[][] matrix;
    int row;
    int column;
    String matrixName;

    Matrix(String[] input, String name) {
        matrixName = name;
        column = input.length;
        row = input[0].split(",").length;
        matrix = new int[row][column];
        // initialize(input);
        System.out.println("First");
    }

    Matrix(Matrix A, char ch) {
        if (ch == 'T') {
            column = A.row;
            row = A.column;
        } else {
            column = A.column;
            row = A.row;
        }
        matrix = new int[row][column];
        matrixName = "result";
        System.out.println("Second");
    }
}

public class Main {
    public static void main(String[] args) {
        Matrix m1 = new Matrix(new String[] { "a", "b" }, "Hello");
        Matrix m2 = new Matrix(m1, 'X');
    }
}

输出:

First
Second

推荐阅读