构造器及它与方法的区别

构造器的概念


 构造器是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new操作符一起使用在创建对象的语句中。构造器名与类名相同,可重载多个不同的构造器。构造器,构造函数,构造方法三者是一个概念。

1.如果类中没有定义任何构造器,系统会给我们默认提供一个无参的构造器。
2.如果类中定义了构造器,那么系统就不会再给我们提供默认的无参构造器。

 

构造器的声明


修饰符 类名 (参数列表){ }

 

构造器与方法的区别


  1. 功能和作用的不同
    构造器是为了创建类的一个对象,同时可以对属性做初始化。方法仅仅是功能函数。

  2. 修饰符
    构造器和方法都可以被 public,protected,default,private修饰。但不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final,static,native,synchronized。

    1.构造器不是通过继承得到的,所以没必要把它声明为final(如果是继承得到的,根据重写的多态性,调用本类构造器却实际执行子类构造器,则可以用final限制)。
    2.一个抽象的构造器将不会在本类中被实现,所以也不能声明为abstract的。
    3.构造器总是关联一个对象而被调用,所以把它声明为static是没有意义的。(但其实构造器默认是static的)

  3. 返回类型
    方法必须要有返回类型,能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。

  4. 命名
    构造器名与类名相同,而方法名则无具体规定。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。

  5. 调用:
    构造方法:总是伴随着new操作符的执行被调用,不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。
    一般方法:在对象创建之后才可以调用,并且可以调用多次。

  6. "this"的用法

    方法中使用this指向正在执行方法的类的对象。(静态方法不能使用this关键字,因为静态方法不属于类的对象,所以this也就没有什么东西去指向)。构造器中的this指向同一个类中,不同参数列表的另外一个构造器,且调用代码必须放在第一行,否则编译将出错。

    如果一个类之中存在了多个构造方法的话,并且这些构造方法都使用了this()互相调用,那么至少要保留一个没有调用过其他构造方法的构造方法,以作为程序的出口。

  7. "super"的用法

    构造器和方法,都用关键字super指向超类。方法用这个关键字去执行被重写的超类中的方法(没被重写就不用加上super了),构造器使用super去调用超类中的构造器。而且调用代码必须放在第一行,否则编译将出错。如果子类构造器没有显示的调用超类的构造器,则将自动地调用超类默认(无参数)的构造器,如果超类没有不带参数的构造器,并且在子类的构造器中又没有显示地调用超类其他地构造器,则编译将出错。(之所以子类一定要用super调用超类构造器,是因为必须先对父类进行初始化与实例化,才能实现继承,从而吸收已有类的属性和行为并且对新类进行扩展。)

  8. 继承
    构造器是不能被继承的。子类可以继承超类的某些方法。因为如果构造器可以被继承,则子类可以通过继承构造器产生父类对象,这样就会出现子类引用指向父类对象的情况。更何况,每次实例化子类的时候都会“自动运行”它父类的构造函数,子类完全没必要扩展父类的构造函数。
     

方法名与类名相同时


public class COM {
	public void COM() {
		 System.out.println("public void COM()") ;
	}
	public COM() {
		 System.out.println("public COM()") ;
	}
	public static void main(String[] args) {
		COM com = new COM();
		com.COM();
	}

}
Output:
public COM()
public void COM()
  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值