ag旗舰厅官网_ag旗舰厅下载客户端

热门关键词: ag旗舰厅官网,ag旗舰厅下载客户端

网络编程

当前位置:ag旗舰厅官网 > 网络编程 > 构造方法,方法的重载

构造方法,方法的重载

来源:http://www.pedaLyourcycLe.com 作者:ag旗舰厅官网 时间:2019-10-05 15:00

图片 1

是还是不是想过创制对象时发生了怎么着?例如<code>Person p = new Person();</code>是在做怎么着?

来看个试验。先定义三个食物类,非常轻巧,就name贰本性能。

答案是在调用类的构造方法。构造方法也是措施吧?是的。在哪呀?作者从没写什么构造方法啊。正是因为您没写所以Java隐式帮您创设了。怎么和睦创办啊?向上面那样:

public class Food { public String name;}
public class Person { //无参构造方法 public Person() { } }

接下来在概念一位类,也很简短,多个name属性和三个eat方法。个中七个eat方法除了方法体其它都同一。

构造方法和日常方法本质是一致的,只是语法上方法名和类名同样且尚未回去值类型。当你new一个Java对象时Java会去实施你的构造方法。假如和煦不创设构造方法讲会隐式创制五个示范中如此的空构造方法。

public class Person { public String name; public void eat() { System.out.println(name + "自己在吃东西"); } public void eat() { Food f = new Food(); f.name = "煎饼"; System.out.println(name + "自己在吃" + f.name); }}

怎么注明new二个新目的的时候会施行这几个构造方法呢?试一下呗,把构造方法增加方法体输出一句话,然后在Test类里测量检验一下:

下一场写个Test类来测验一下:

//无参构造方法public Person() { System.out.println("执行了无参构造方法");}

Person p = new Person();
public class Test { public static void main(String[] args) { Person zhangsan = new Person(); zhangsan.eat(); }}

运行结果:<pre>实施了无参构造方法</pre>

结果编写翻译出错了:<pre>.Person.java:9: 错误: 已在类 Person中定义了点子 eat()public void eat() {^1 个谬误</pre>

构造方法和普通方法同样,也足以有参数和实行格局重载。大家给Person多加多少个天性:

错误新闻告诉大家Java中贰个类里有七个重复的法子是不当的。所谓重复方法指的是措施的签名重复,方法的签定指的是方法名和参数列表,不包含再次回到类型。换句话说Java不允大多个类里的几个主意的方法名和参数列表都一致。

public class Person { public String name; public int age; //无参构造方法 public Person() { System.out.println("执行了无参构造方法"); } //带参数构造方法 public Person(String name) { this.name = name; } public Person(String name, int age) { this.name = name; this.age = age; } }

既然,假如我们必要在类里定义四个以上措施名一样的法子,那么只可以让他俩的参数列表不一样了。方法名一样而参数列表差别的点子就叫做重载。

测量试验一下:

修改示例中的Person类,对eat方法开展重载。

Person p = new Person();Person zhangsan = new Person;Person lisi = new Person;
public class Person { public String name; // 以下是4个重载方法,方法名相同,参数列表不同 public void eat() { System.out.println(name + "自己在吃东西"); } public void eat { System.out.println(name + "自己在吃" + f.name); } public void eat { System.out.println(name + "和" + p.name + "在吃东西"); } public void eat(Person p, Food f) { System.out.println(name + "和" + p.name + "在吃" + f.name); } }

运作结果:<pre>执行了无参构造方法实施了String name构造方法施行了String name, int age构造方法</pre>

诸有此类编写翻译就不会出难点了,Java会基于调用eat()时传进来的参数而挑选奉行相应的eat()。

亲自过问new了多少个Person对象,每趟传进去的参数不均等,试行的构造方法也绝差别样。所以每new五个新指标构造方法就能够被实施。构造方法经常用于对指标举办开端化。

测量检验一下:

提起底还会有有些要小心,假如您的类里已经有构造方法时,Java将不再会活动创制贰个无参且方法体为空的构造方法。举个例子笔者把无参构造方法注释掉,然后再编译代码

public class Test { public static void main(String[] args) { Person zhangsan = new Person(); zhangsan.name = "张三"; zhangsan.eat(); Food f = new Food(); f.name = "煎饼"; zhangsan.eat; Person lisi = new Person(); lisi.name = "李四"; zhangsan.eat; zhangsan.eat; } }
/*//无参构造方法public Person() { System.out.println("执行了无参构造方法");}*/

运维结果:<pre>张三投机在吃东西张三本人在吃煎饼张三和李四在吃东西张三和李四在吃煎饼</pre>

编写翻译时会出现“找不到适当的构造器”的错误。<pre>Test.java:4: 错误: 对于Person, 找不到切合的组织器Person p = new Person();^构造器 Person.Person不适用(实际参数列表和款式参数列表长度不相同)构造器 Person.Person(String,int)不适用(实际参数列表和样式参数列表长度差别)1 个错误</pre>

最后还应该有一点要静心,方法的参数是有各种的。比方

本文代码下载:百度网盘

public void eat(Person p, Food f)

public void eat(Food f, Person p)

就算参数一样只是参数顺序分裂,这样也算重载。

本文代码下载:百度网盘

本文由ag旗舰厅官网发布于网络编程,转载请注明出处:构造方法,方法的重载

关键词:

上一篇:递归方法

下一篇:没有了