【Java基础】构造方法调用构造方法

从一个程序开始:

 1 class dog
 2 {
 3     private String name;
 4     private String color;
 5     private int age;
 6
 7     dog(String name)
 8     //仅给name赋值
 9     {
10         this.name=name;
11     }
12     dog(String name,String color)
13     //仅给name,color赋值
14     {
15         this.name=name;//但之前有过类似代码
16         this.color=color;
17     }
18     dog(String name,String color,int age)
19     //仅给name,color,age赋值
20     {
21         this.name=name;
22         this.color=color;//之前有过类似代码
23         this.age=age;
24     }
25 /*以上代码缺点,代码重复,
26 而且如果修改最初定义的参数(如name)时,
27 需要大量修改方法中的参数(3处修改),造成不便*/
28 }
29
30 class ConstructerDemo
31 {
32     public static void main(String[] args)
33     {
34
35     }
36 }

此时我们可以使用构造方法来调用构造方法(形式为this(实参)),来解决上述问题,改进如下:

 1 class dog
 2 {
 3     private String name;
 4     private String color;
 5     private int age;
 6
 7     dog(String name)
 8     //仅给name赋值
 9     {
10         this.name=name;
11     }
12     dog(String name,String color)
13     //仅给name,color赋值
14     {
15         //this.name=name;//但之前有过类似代码
16         this(name);//改进后
17         this.color=color;
18     }
19     dog(String name,String color,int age)
20     //仅给name,color,age赋值
21     {
22         //this.name=name;
23         //this.color=color;//之前有过类似代码
24         this(name,color);//改进后
25         this.age=age;
26     }
27 /*以上代码缺点,代码重复,
28 而且如果修改最初定义的参数(如name)时,
29 需要大量修改方法中的参数(3处修改),造成不便*/
30 }
31
32 class ConstructerDemo
33 {
34     public static void main(String[] args)
35     {
36
37     }
38 }

我们要注意的是,对this构造器的调用必须是构造器中第一个语句

也就是两点要注意,一是this构造器必须放在构造器中。二是必须为构造器中的第一个语句。

时间: 2024-10-29 07:58:42

【Java基础】构造方法调用构造方法的相关文章

Java基础—面向对象之构造方法

一.构造方法的介绍 开发过程中经常需要在创建对象的同时明确对象的属性,比如员工刚入职公司就要明确他的姓名.年龄等属性信息. 那么在创建对象就要明确属性值,如何实现呢?也就是在创建对象的时候就要做的事情,当使用new关键字创建对象时,怎么给对象属性初始化值呢?这里就要用到Java的构造方法. 那么什么是构造方法?从字面理解即为构建创造时用的方法,既对象创建时要执行的方法.既然是对象创建时候要执行的方法,那么只要在new对象时,知道其执行的构造方法是什么,就可以在执行这个方法的时候给对象进行属性赋值

Java 基础 面向对象之构造方法和关键字

构造方法 构造方法简介 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建对象的时候就要做的事情,当使用new关键字创建对象时,怎么给对象的属性初始化值呢?这就要学习Java另外一门小技术,构造方法. 那什么是构造方法呢?从字面上理解即为构建创造时用的方法,即就是对象创建时要执行的方法.既然是对象创建时要执行的方法,那么只要在new对象时,知道其执行的构造方法是什么,就可以在执行这个方法的

Java基础5—{面向对象(构造方法、对象的创建步骤、static关键字、Math类)}

1.面向对象 1.1 构造方法概述和格式 1:构造方法概述和作用 创建对象,给对象中的成员进行初始化 2:构造方法格式特点 a:方法名与类名相同 b:没有返回值类型,连void都没有 c:没有具体的返回值 1 public class Student { 2 private String name; 3 private int age; 4 //我们自定义的类,默认存在一个空参构造构造方法 5 //构造方法的语法:方法名跟类名相同,没有返回值,连void 也没有 6 public Student

阿花宝宝 Java基础笔记 之 构造方法

构造方法语法:public 类名(){}1.实例化对象时,调用类的默认的隐藏的无参的构造方法.2.如果有自定义的构造方法,则不调用默认的类的无参的构造方法. 类名 对象名=new 类名()://这是调用了的类的无参的构造方法 类名 对象名=new 类名(name,age)://这是调用了类的有参构造方法3.方法名跟类名相同.区分大小写4.构造方法没有void ,如果有void 则看作普通方法5. 构造方法的作用一般是用来初始化对象属性6.如果构造方法内要调用别的构造方法使用 this(参数):t

[java基础]递归调用

递归调用:通过调用或间接调用程序自身 递归调用最重要的一点是,一定要有个头,要是没有头,一直调用下去,就成了死循环了. 代码示例: /** * 递归调用代码示例<br> * 说明:一个方法,自己直接或间接的调用自己.<br> * @author 冲出地球 * */ public class Recursion { /** * 示例程序:阶乘<br> * 一个数的阶乘,就是从1一直乘到那个数<br> * 示例:2! = 1*2 5! = 1*2*3*4*5&l

JNI/NDK开发指南(八)——调用构造方法和父类实例方法

转载请注明出处:http://blog.csdn.net/xyang81/article/details/44002089 在第6章我们学习到了在Native层如何调用Java静态方法和实例方法,其中调用实例方法的示例代码中也提到了调用构造函数来实始化一个对象,但没有详细介绍,一带而过了.还没有阅读过的同学请移步<JNI/NDK开发指南(六)--C/C++访问Java实例方法和静态方法>阅读.这章详细来介绍下初始一个对象的两种方式,以及如何调用子类对象重写的父类实例方法. 我们先回过一下,在J

Java基础--面向对象

------- android培训.java培训.期待与您交流! ---------- 面向对象 是一种思想,把复杂事物简单化,把面向过程的执行者变成了指挥者.过程其实就是函数,而对象将函数和一些内容封装.把事物的属性和行为封装成对象,再把对象抽象成类. Java 面向对象的三个特征:封装.继承.多态 类 是一组事物共有特征和功能的描述.是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块.类的概念是抽象的,类似于建筑设计中的图纸,是对于现实需要代表的具体内容的抽象.类只包含框架结

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

java学习中,匿名函数、构造方法、构造代码块、构造方法中调用构造方法(java 学习中的小记录)

java学习中,匿名函数.构造方法.构造代码块.构造方法中调用构造方法(java 学习中的小记录) 作者:王可利(Star·星星) 匿名函数 匿名对象:没有名字的对象 匿名对象使用的注意点: 1.一般不会用匿名对象给属性赋值,无法获取属性值,每次new 都是一个新的对象. 2.匿名对象永远都不可能是一个对象. 如:person new().name = "星星":是不行的 匿名对象的好处:书写简单. 匿名对象使用的场景: 1.如果一个对象调用一个方法一次的时候,就可以用匿名对象来调用.