首页 > 编程知识 正文

Java 构造方法,构造方法包括

时间:2023-05-04 19:10:53 阅读:147560 作者:2308

如果不定义生成方法,直接赋值将导致错误。

package com.im OOC.construction method; classexampleperson { public string name; 公共信息;

} public class example { publicstaticvoidmain { string [ ] args }

examplepersonmi=newexampleperson (' mi ',12 ); //不能这样直接参加

system.out.println(mi.name;

}

}

执行结果:

我们以前是这样的:

public class example2{ publicstaticvoidmain { string [ ] args }

examplepersonmi=newexampleperson (;

mi.name='mi '; //直接为字段分配值

system.out.println(mi.name;

}

}

当然,也可以设置以下方法:

公共void set name (string name ) {this.name=name;

}publicString getName () {returnname;

}

这样就可以取得值了。

mi.setname(mi );

system.out.println(mi.getname );

不过,这似乎有点麻烦。 以下是用python实例化对象的示例。

class student (对象) :

def __init__(self,name,score ) :

self.name=name

self.score=score

efprint_score(self ) :

print(3360%s ) self.name,self.score ) ) ) ) ) ) ) )。

接下来,采样如下:

Bart=student('BartSimpson ',59 ) )。

Lisa=student(LisaSimpson ),87 ) )。

实际上,python之所以能这样做是因为__init__是构造函数。 其实java也有构建方法

package com.im OOC.construction method; classexampleperson3{ privatestring name; 私有增量; publicexampleperson3(string name,intage ) {this.name=name; this.age=age;

}publicString getName () {returnname;

}公共集成() ) {returnage;

}

} public class example3{ publicstaticvoidmain { string [ ] args }

example person3gxdxtd=newexampleperson3(gxdxtd ),18 );

system.out.print ln (gxdxtd.getname );

system.out.print ln (gxdxtd.get age );

}

}

这样,您就可以在创建对象时实例化对象的属性。 这类似于python创建对象。

上面的构建方法与类名相同。 与普通函数不同,生成方法没有返回值。

请注意,必须使用new操作符才能调用构造方法。

1 .如何生成缺省

任何种类不都有结构吗? 是的。

在以前的许多例子中,我们没有配置方法,但是为什么可以进行new Person呢?

package com.im OOC.object oriented; classPerson {privateString name; 私有增量;

} publicclassobjectmethod { publicstaticvoidmain { string [ ] args }

Person ming=newPerson (;

ming.name='mingwang ';

ming.age=26;

system.out.println(ming.name;

}

}

如果类未设置构造函数方法,编译器将自动生成构造函数方法。 他既没有参数也没有句子。 就这样做。

类人员{

.公共人员() {

}

}

2.多构造方法

如果既要使用不带参数的构造方法,也想使用带参数的构造方法,那么就必须把两个构造方法都配置出来。

可以给一个类定义多个构造方法,在通过new操作符调用的时候,编译器会通过构造方法的参数数量、位置和类型来选择构造方法。

packagecom.imooc.constructionmethod;classExamplePerson3 {private String name = "gxdxtd";private int age = 18;public ExamplePerson3(String name,intage) {this.name =name;this.age =age;

}publicExamplePerson3() {this.name =name;this.age = 12;

}publicString getName() {returnname;

}public intgetAge() {returnage;

}

}public classexample3 {public static voidmain(String[] args){

ExamplePerson3 ming= new ExamplePerson3("ke",27);

System.out.println(ming.getName());//ke

System.out.println(ming.getAge()); //27

ExamplePerson3 笨笨的超短裙 = new ExamplePerson3("笨笨的超短裙"); //编译器会根据参数个数来选择构造方法

System.out.println(笨笨的超短裙.getName()); //笨笨的超短裙

System.out.println(笨笨的超短裙.getAge()); //12

}

}

构造方法还可以调用其他的构造方法,以此来提高代码的复用,通过this的形式。

packagecom.imooc.constructionmethod;classExamplePerson3 {private String name = "gxdxtd";private int age = 18;public ExamplePerson3(String name,intage) {this.name =name;this.age =age;

}publicExamplePerson3() {this("niao",3); //构造方法还可以调用其他的构造方法,通过this形式

}publicString getName() {returnname;

}public intgetAge() {returnage;

}

}public classexample3 {public static voidmain(String[] args){

ExamplePerson3 ming= new ExamplePerson3("ke",27);

System.out.println(ming.getName());//ke

System.out.println(ming.getAge()); //27

ExamplePerson3 笨笨的超短裙 = new ExamplePerson3(); // System.out.println(笨笨的超短裙.getName()); //niao

System.out.println(笨笨的超短裙.getAge()); //3

}

}

3.初始化赋值

在一个对象已经构造完成的时候,其属性其实已经填充完毕。

packagecom.imooc.constructionmethod;classExamplePerson3 {private String name; //null

private int age; //0

publicExamplePerson3() {}publicString getName() {returnname;

}public intgetAge() {returnage;

}

}public classexample3 {public static voidmain(String[] args){

ExamplePerson3 ming= newExamplePerson3();

System.out.println(ming.getName());//null

System.out.println(ming.getAge()); //0

}

}

在上述示例中,我们并没有赋值,但是每个属性都已经有值。

属性的默认值是其字段类型的默认值。

当然,还可以在定义属性的时候,直接定义值:

packagecom.imooc.constructionmethod;classExamplePerson3 {private String name = "gxdxtd";private int age = 18;publicString getName() {returnname;

}public intgetAge() {returnage;

}

}public classexample3 {public static voidmain(String[] args){

ExamplePerson3 ming= newExamplePerson3();

System.out.println(ming.getName());//gxdxtd

System.out.println(ming.getAge()); //18

}

}

那么,既对字段进行初始化,又调用了构造函数,字段该如何取值了?

packagecom.imooc.constructionmethod;classExamplePerson3 {private String name = "gxdxtd";private int age = 18;public ExamplePerson3(String name,intage) {this.name =name;this.age =age;

}publicString getName() {returnname;

}public intgetAge() {returnage;

}

}public classexample3 {public static voidmain(String[] args){

ExamplePerson3 ming= new ExamplePerson3("ke",27);

System.out.println(ming.getName());//ke

System.out.println(ming.getAge()); //27

}

}

在Java中创建对象示例的时候,按照如下顺序进行初始化:

(1)先初始化字段,如果没有给值,那么采用默认值。

(2)执行构造方法的代码进行初始化。

因此上方函数会显示构造方法的赋值。

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