一、构造方法

构造方法的主要目的是为类中的属性初始化

二、构造方法的定义格式

class 类名称{
访问权限 类名称(类型1 参数1,类型2 参数2,…){
程序语句 ;
…    // 构造方法没有返回值
}
}

在构造方法的声明中读者一定要牢记以下几点:
· 构造方法的名称必须与类名称一致
· 构造方法的声明处不能有任何返回值类型的声明
· 不能在构造方法中使用return返回一个值
class Person {
private String name; // 声明姓名属性
private int age; // 声明年龄属性
public Person(String name,int age){ // 定义构造方法为属性初始化
this.setName(name) ; // 为name属性赋值
this.setAge(age) ; // 为age属性赋值
}
public void tell() { // 取得信息的方法
System.out.println("姓名:" + getName() + ",年龄:" + getAge());
}
...
public void setAge(int a) { // 设置年龄
if (a >= 0 && a < 150) { // 在此处加上验证代码
age = a;
}
}
}
public class ConsDemo02 {
public static void main(String args[]) {
Person per = new Person("张三",30); // 调用构造方法,传递两个参数
per.tell(); // 输出信息
}
}

三、 构造方法

3.1 、默认的构造方法

每个类中肯定都会有一个构造方法
如果一个类中没有声明一个明确的构造方法则会自动生成一个无参的什么都不做的构造方法

package com.pb.demo2;
/*
* 人类
*/
public class Person { //Persion为类名
/*
* 属性,name,sex,age
*/
public String name; //名字
public String sex ; //性别
public int age; //年龄 /*
*方法(行为)
*/
//吃饭
public void eat(String name){ //传入一个String类型参数
System.out.println(this.name+"邀请"+name+"一起吃饭");
}
//工作
public void work(){
System.out.println(name+"的工作理念是,干活挣钱有饭吃!");
}
//工作
public void work(String contect){
System.out.println(name+"的工作理念是: "+contect);
}
}

上面这个类并没有定义构造方法,但在创建这个类的对象里会默认调用无参数的构造方法

    public Person() {

            }
    public static void main(String[] args) {
//创建Person类的对象
Person hanbing=new Person(); //调用无参数的构造方法
}

四、构造方法的重载

构造方法的重载过程与普通方法一样:参数的类型或个数不同

4.1构造方法的重载例一

public Person(){
//无参数
}
public Person(String name){
//一个参数
this.name=name ;
}
public Person(String name,int age){
//两个参数
this.name=name;
this.age=age;
}

4.2、例2

package com.pb.demo2;
/*
* 影片类
*/
public class Film {
public String type; //影片类型,恐怖片,爱情等
public String name; //电影名称
public String director; //导演
public String actor; //主演 public Film() {
//无参数的构造方法
} public Film(String type) {
//一个参数
this.type=type;
}
public Film(String type, String name, String director, String actor) {
//全部参数的构造方法
this.type = type;
this.name = name;
this.director = director;
this.actor = actor;
} //简介方法
public String display(){
String msg="影片类型: "+type+"\n片名 : "+name+"\n导演:"+director+"\n主演: "+actor;
return msg;
} }

测试类

package com.pb.demo2;
/*
* 影片测试类
*/
public class FilmTest { public static void main(String[] args) {
System.out.println("*******普通调用******");
// 声明影片对象
Film film=new Film();
//为对象的类型,名字,导演,主演赋值
film.type="枪战片";
film.name="让子弹飞";
film.director="姜文";
film.actor="周润发、葛优、姜文";
//调用方法
System.out.println(film.display()); System.out.println("**************使用构造方法****************");
// 声明影片对象并通过构造方法来传入参数
Film two=new Film("爱情片", "不能说的秘密", "周杰伦", "周杰伦、黄秋生、桂纶镁");
System.out.println(two.display());
} }

Java从零开始学十二(构造方法)的更多相关文章

  1. Java从零开始学十九(异常)

    一.什么是异常 从字面上讲,就是不正常的现实就是异常. 程序中的异常也是要在程序运行中才会偶尔发生.如果程序还没有运行,编译就报错,这种不叫异常,这种叫编译错误,通常是语法上的错误 二.java中异常 ...

  2. Java从零开始学十八(抽象类和接口)

    一.什么是抽象类和接口 抽象类.接口与类是一个层次的概念,是java中极其重要的概念. 抽象类是从多个类中抽象出来的公共模板,提供子类均具有的功能. 接口是从多个类中抽象出来的规范,体现的是规范和实现 ...

  3. Java从零开始学十五(继承)

    一.继承作用 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法 ...

  4. Java从零开始学十四(包和访问控制)

    一.java中的包 Java文件的组织形式Windows中的文件功能类似 在开发比较大的项目时,不可能只涉及到一个java文件,可能要创建几十,甚至几百个java文件,这个时候,我们就可以使用包,把相 ...

  5. Java从零开始学十六(多态)

    一.什么是多态 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题.多态有两种表现形 ...

  6. Java从零开始学十(Arrays类对数组的常用方法)

    一.Arrays类常用方法 二.简单例子 package com.pb.demo1; import java.util.Arrays; /* * Arrays工具类的中的几个常用方法 * 1.copy ...

  7. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用【补充】

    在 Hyperledger Fabric 1.0 从零开始(十二)--fabric-sdk-java应用 中我已经把官方sdk具体改良办法,即使用办法发出来了,所有的类及文件都是完整的,在文章的结尾也 ...

  8. 并发编程从零开始(十二)-Lock与Condition

    并发编程从零开始(十二)-Lock与Condition 8 Lock与Condition 8.1 互斥锁 8.1.1 锁的可重入性 "可重入锁"是指当一个线程调用 object.l ...

  9. Java设计模式(十二) 策略模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...

随机推荐

  1. CDOJ 838 母仪天下 树状数组 (2014数据结构专题

    母仪天下 Time Limit: 1 Sec  Memory Limit: 162 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/838 Descrip ...

  2. 在IDEA(phpStorm)中使用Babel编译ES6

    安装Babel 官方文档建议我们根据单个项目进行本地安装,原因是不同的项目可以依赖不同版本的 Babel,使你的项目更方便移植.更易于安装. 在项目的根目录下使用命令行工具(CMD等)执行下面代码 n ...

  3. mysql的show status详解(转载)

    SHOW STATUS提供服务器的状态信息(象mysqladmin extended-status一样).输出类似于下面的显示,尽管格式和数字可以有点不同: +-------------------- ...

  4. FastBoot BootLoader Recovery 模式解释

    理论上,所有的Android设备都存在着Fastboot/Bootloader模式,不过,由于Android操作系统的开源特性,各厂商的对 自家的相关Android设备都有着各自不同的Fastboot ...

  5. [Asp.net MVC]Bundle合并,压缩js、css文件

    摘要 在web优化中有一种手段,压缩js,css文件,减少文件大小,合并js,css文件减少请求次数.asp.net mvc中为我们提供一种使用c#代码压缩合并js和css这类静态文件的方法. 一个例 ...

  6. [转载] C-MEX程序编写

    原作者,胡荣春 2006-10-11 1  MEX文件简介 在MATLAB中可调用的C或Fortran语言程序称为MEX文件.MATLAB可以直接把MEX文件视为它的内建函数进行调用.MEX文件是动态 ...

  7. java 内存溢出 栈溢出的原因与排查方法

     1. 内存溢出的原因是什么?        内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出.如果出现这种现象可行代码排查: 一)是否App中的类中和引用变量过多使用了 ...

  8. 基尼系数(Gini coefficient),洛伦茨系数

    20世纪初意大利经济学家基尼,于1922年提出的定量测定收入分配差异程度的指标.它是根据洛伦茨曲线找出了判断分配平等程度的指标(如下图). 设实际收入分配曲线和收入分配绝对平等曲线之间的面积为A,实际 ...

  9. 【BZOJ】【2750】【HAOI2012】Road

    最短路+拓扑序DP orz zyf & lyd 统计每条边在多少条最短路径上……其实可以统计 有多少条最短路径经过了x,以及y出发到达任意一个结束点有多少种走法(沿最短路) 我们可以用Dijk ...

  10. 【BZOJ】【1038】【ZJOI2008】瞭望塔

    计算几何/半平面交 说是半平面交,实际上只是维护了个下凸壳而已……同1007水平可见直线 对于每条线段,能看到这条线段的点都在这条线段的“上方”,那么对所有n-1条线段求一个可视区域的交,就是求一个半 ...