摘要
要学习Java,必须了解生成器。 对于初学者来说,这很容易混淆,因为生成器可以提供许多特殊的方法。 但是,构建者和方法还有很多重要的区别。
原作者: Robert听话战斗机原站: www.javaworld.com
我们说生成器是方法。 就像说澳大利亚的鸭嘴兽是饲养动物一样。 (按)老人喜欢比喻,我也照做翻译。 要了解鸭嘴兽,首先要了解它与其他饲养动物的区别。 同样,要理解构造函数,必须了解构造函数和方法之间的差异。 对于所有学习java的人,特别是参加认证考试的人,了解生成器非常重要。 简单介绍一下,最后用一张表做了简单的总结。
功能和作用的区别
构造函数用于创建类的实例。 创建对象时也可以使用此过程。 Platypus p1=new Platypus (;
相反,方法的作用是执行java代码。
修饰符、返回值和名称之间的差异
构造函数和方法有三个有用的区别:限定符、返回值和命名。 和方法一样,构造函数可以有任意的访问限定。 公共、受保护、私有或无修饰(通常由package和friendly调用)。 与方法不同,构造函数不能具有非访问性限定,如abstract、final、native或Stative
返回类型也非常重要。 方法可以返回什么类型的值,或者没有返回值。 构造函数没有返回值,也不需要void。
最后,谈谈两者的命名。 构造函数使用与类相同的名称,方法不同。 习惯上,方法通常以小写字母开始,而生成器通常以大写字母开始。 构造函数通常与类名相同,因此是名词。 方法通常与动词接近。 因为要说明操作。
“this”的用法
构造函数和方法使用关键字this有很大的区别。 方法引用运行该方法的类的this实例。 静态方法不能使用this关键字。 静态方法不属于类的实例,因此没有任何指向this的内容。 构造函数的this指向同一类中不同参数列表的另一个构造函数。 请看下面的代码。
public class Platypus {
字符串名称;
platypus(stringinput ) {
name=input;
}
Platypus () }
this(John/drDWDDoe );
}
publicstaticvoidmain (string args [ ] ) {
platypusP1=newplatypus(digger );
Platypus p2=new Platypus (;
}
}
上面的代码具有两个不同参数列表的构造函数。 第一个构造函数为类的成员name赋值,第二个构造函数调用第一个构造函数,为成员变量name提供初始值' John/drdwd Doe '。
在构造函数中,如果使用关键字this,则必须将其放在第一行。 否则,会出现编译错误。
“super”的使用方法
构造函数和方法在关键字super中指向超类,但使用方法不同。 方法使用该关键字执行重载超类中的方法。 请看以下示例:
class Mammal {
void getBirthInfo (
system.out.println('bornalive.' );
}
}
class Platypus extends Mammal {
void getBirthInfo (
system.out.println (hatchfromeggs );
system.out.print (amammalnormallyis );
super.getBirthInfo (;
}
}
上面的示例使用super.getBirthInfo )调用超类Mammal中重载的方法。
构造函数使用super调用超类的构造函数。 这个代码应该放在第一行。 否则,编译将会发生错误。 请看以下示例:
公共类super类demo {
超类守护进程
}
classchildextendssuperclassdemo {
Child () }
super (;
}
}
在以上没有实际意义的示例中,构造函数Child ()包含super,用于实例化超类的构造函数SuperClassDemo并将其添加到Child类中。
编译器自动添加代码
编译器会自动将代码添加到生成器中。 关于这一点,java程序员的初学者可能很混淆。 如果编写没有构造函数的类,编译器将在编译时自动添加一个没有参数的构造函数。 示例:公共类扩展{ }
编译后,将显示以下代码。
公共类扩展{
Example () }
}
构造函数的第一行还会自动添加编译器(如果未使用super )。 例如:
公共类测试构造{
测试结构
}
编译器按如下方式添加代码:
公共类测试构造{
TestConstructors (
超级;
}
}
仔细想想,就会发现以下代码
公共类扩展{ }
由编译器编码。
公共类扩展{
Example () }
超级;
}
}
继承
构造函数不能继承。 子类可以继承超类的任何方法。 请看以下代码:
公共类扩展{
公共void sayhi {
system.out.println('hi );
}
Example () }
}
publicclasssubclassextendsexample {
}
类SubClass自动继承父类的sayHi方法,但不能继承父类的构造函数Example ()。
总结