继承在Java和C++中很相似.Java使用extends关键字代替了C++中的":"符号.Java中的任何继承都是公有继承;而没有和C++中的私有和受保护继承相似的概念.
有人认为super和this引用类似.这种类比是不准确的:super不是一个对对象的引用(比如你不能把值super赋给另一个对象变量),而是指示编译器调用超类方法的专用关键字.
Java中使用关键字super调用超类中方法.在C++中,相应的调用规则是在超类名字后加上"::"运算符.
this关键字有两个意思:一是表示对隐式参数的引用;一是调用同一类的其他构造器.同样super关键字也有两个意思:一是调用超类方法;一是调用超类构造器.当被用来调用构造器时,这两个关键字十分类似.在一个构造器中,对其他构造器的调用只能出现在第一行语句中.构造器参数既可以传递给同一个类的其他构造器(使用this),也可以传递给超类的构造器(使用super).
如果之类构造器没有显示调用超类构造器,那么超类会使用默认(无参数)构造器.如果超类没有默认构造器,而且之类构造器又没有调用其他超类构造器,那么Java编译器会报告错误.
没有评论:
发表评论