前言
在复习到Java构造方法的时候,遇到了一个之前没有想过的问题:在构造方法前面加void会有什么变化
然后就产生了本文
首先新建两个类:TriAngle 和 TriAngleTest
TriAngle:
public class TriAngle
{
private int base;
private int height;
public TriAngle(int base, int height)
{
this.base = base;
this.height = height;
System.out.println((this.height * this.base) / 2);
}
TriAngleTest:
public class TriAngleTest
{
public static void main(String[] args)
{
TriAngle triAngle = new TriAngle(10,9);
}
}
这时候如果运行TriAngleTest的main方法是可以成功打印出(10*9)/2的值的
但是如果我在TriAngle的构造方法中加入返回符void,
即:
public void TriAngle(int base, int height)
这时候TriAngleTest类的
TriAngle triAngle = new TriAngle(10,9);
就会报错:
TriAngle( ) in TriAngle cannot be applied to(int,int)
但是如果你将TriAngleTest的
TriAngle triAngle = new TriAngle(10,9);
改成:
TriAngle triAngle = new TriAngle();
triAngle.TriAngle(10,9);
成功打印出(10*9)/2的值
总结
原因是:构造方法前面是没有任何返回符,不能加任何返回类型,包括void.一个构造方法一旦加了void,那么这个就不是构造方法了,变成了一个普通的方法。
也就是说当你加void的时候,TriAngle已经变成了一个普通方法,这时候你没有为类自定义任何一个构造方法,所以系统为你分配一个缺省的无参数构造方法,需要new对象去实例化调用。