首页 > 编程知识 正文

java默认构造器修饰符,构造器和构造方法

时间:2023-05-05 23:38:01 阅读:173060 作者:4704

摘要

要学习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 ()。

总结

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。