java构造器用于创建类的实例,是创建对象的重要途径,因此,java类必须含有一个或一个以上的构造函数

 
当我们没有为类提供任何构造函数的时候,系统会自动为该类提供一个无参构造函数,当我们为类提供了一个或多个构造函数后,系统就不会自动创建无参构造函数,这时,如果我们要使用无参构造函数,就要自己创建一个。
 
构造器的一个最大的用处就是在创建对象的时候,给对象的属性显性指定初始值
示例代码:
package object;

public class Car {

    //如果不创建构造函数的话,系统会自动创建一个如下的无参构造函数
//此时,对象属性会赋默认值
public Car (){} //再创建一个带一个参数的构造函数
public Car(String carName){
this.setCarName(carName);
} //另一个带一个参数的构造函数
public Car(String carType,String carName){ this.carType = carType;
this.carName = carName;
} /*上面两个构造器中调用的不一样,一个调用的对外提供的set方法,一个调用的是属性
*在测试页面中,利用所有的构造函数创建的对象,都能输出传入的值,
*但是,既然类中的属性被定义为private,那就说明不想被外界直接获取,
*以免传入不符合实际的值...所以应该还是加个判断,或者调用对外的set方法比较好。
* */ //定义车的属性
private String carName;
private String carType; //对外提供的get/set方法
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public String getCarType() {
return carType;
}
public void setCarType(String carType) {
this.carType = carType;
}
}
package object;

public class TestCar {
public static void main(String[] args) { //无参
Car car1 = new Car();
//因为在Car中属性的修饰符是private
//所以只有通过get/set方法对属性取值赋值
System.out.println(car1.getCarName()); //带一个参数 this.set方法
Car car2 = new Car("野马");
System.out.println(car2.getCarName()); //带两个参数 this.属性
Car car3 = new Car("福特","野马");
System.out.println(car3.getCarType());
System.out.println(car3.getCarName()); }
}
 

构造器的重载:

        同一个类中,多个构造器,构造器的形参列表不同,称为构造器重载。可以根据不同的构造器初始化java对象。
 
可以通过this关键字在构造器中调用相应的构造器
示例代码:
 package object;

 public class Train {

     /*构造函数的重载*/
public Train(){} public Train(String type){
this.type = type;
} public Train(String type,String color){
//this调用相应的构造函数
this(type);
this.color = color;
} public Train(String type,String color,String longth){
//this调用相应的构造函数
this(type, color);
this.longth = longth;
} //属性
public String type; //种类
public String color; //颜色
public String longth; //长度 //测试方法
public void trainInfo(Train t){
StringBuffer sb = new StringBuffer("这是一列");
if(t.longth != null && t.longth.length()>0){
sb.append("由"+t.longth+"辆");
}
if(t.type != null && t.type.length()>0){
sb.append(t.type+"组成的");
}
if(t.color != null && t.color.length()>0){
sb.append("颜色是"+t.color+"的");
}
sb.append("火车"); System.out.println(sb.toString());
} //主函数
public static void main(String[] args) { //根据不同的构造函数创建对象
Train t1 = new Train(); Train t2 = new Train("22B型客车"); Train t3 = new Train("25T型客车", "蓝白相间"); Train t4 = new Train("25T型客车", "绿色", "16"); t1.trainInfo(t1);
//这是一列火车
t2.trainInfo(t2);
//这是一列22B型客车组成的火车
t3.trainInfo(t3);
//这是一列25T型客车组成的颜色是蓝白相间的火车
t4.trainInfo(t4);
//这是一列由16辆25T型客车组成的颜色是绿色的火车
}
}

Train.java

 
 
 
 
 
 

【java基础】java的构造函数的更多相关文章

  1. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  2. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  3. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  4. Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)

    Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...

  5. Java基础-Java中的并法库之线程池技术

    Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.

  6. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  7. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  8. Java基础-Java数据类型

    Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...

  9. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  10. 转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认) ...

随机推荐

  1. 利用Python实现从百度下载图片到本地磁盘

    import urllib.request import os import re url=r'http://image.baidu.com/search/index?tn=baiduimage&am ...

  2. sqlserver日志管理(转载)

    sql 在使用中每次查询都会生成日志,但是如果你长久不去清理,可能整个硬都堆满哦,笔者就遇到这样的情况,直接网站后台都进不去了.下面我们一起来学习一下如何清理这个日志吧     SQL2005清空删除 ...

  3. Kolmogorov-Smirnov检验

    Kolmogorov-Smirnov检验(K-S检验)基于累积分布函数,用以检验一个经验分布是否符合某种理论分布或比较两个经验分布是否有显著性差异. 两样本K-S检验由于对两样本的经验分布函数的位置和 ...

  4. linux hadoop安装

    linux hadoop安装 本文介绍如何在Linux下安装伪分布式的hadoop开发环境. 在一开始想利用cgywin在 windows下在哪, 但是一直卡在ssh的安装上.所以最后换位虚拟机+ub ...

  5. 苹果版App开发心得

    这几个月中做的工作包括网站开发.安卓App开发和苹果App开发,前两者用的语言都是我熟悉的java,故苹果知识的学习,较安卓知识的学习,多出「语言基础」一块,其他方面差不多. 之前发过安卓那篇,如感兴 ...

  6. Azure Virtual Machine 之 如何利用Management Class Libraries 创建VM

    之前发的blog简单的介绍了如何使用Management Class Libraries 来控制Azure platform. 但由于官方并没有提供文档,所以我们只能够通过自己研究来摸索使用该类库的方 ...

  7. JDK1.6 中文API 下载地址

    Java JDK 1.6 API 中文文档HTML版:点击下载 http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/pub ...

  8. ps一些图片的操作

    ctrl+c 复制 ctrl+n 新建 ctrl+v粘贴 ctrl+s 保存 如果要将某个带字的背景去掉它的字体那么就是 ctrl+t

  9. 微信H5页面内实现一键关注公众号

    H5页面内实现关注公众号的微信JSSDK没有相关接口开放,因此就得动点脑筋来实现该功能了.下面的方法就是通过一种非常蹊跷的方式实现的. 首先,需要在公众号内发表一篇原创文章,注意是原创文章,然后由另一 ...

  10. List 用法和实例(转载)

    写在粘贴复制前:英文的感觉也可以,也能看的懂,多看看英文资料没坏处的 Problem. You have questions about the List collection in the .NET ...