有区别:
shapes sp; 只是声明并定义过了引用shapes的引用sp; 这个语句没有任何实例化shapes操作;
shapes sp=new shapes(); 声明并定义过了引用sp,并且实例化一个shapes实例并赋值个sp;
只有第2句话才是实例化对象,
第1句话只是声明了一个shapes对象
就好比这样,int i;
你只是声明了一个int型变量,但你要使用的话,肯定是不行的,编译就通不过
其实也可以这么写,int i=new int();
这样的话就是对i变量进行了实例化,通过调用其构造函数,为i赋了初始值0