Java从零开始学十二(构造方法)

一、构造方法

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

二、构造方法的定义格式

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());
    }

}
时间: 2024-10-10 16:03:44

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

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

一.什么是抽象类和接口 抽象类.接口与类是一个层次的概念,是java中极其重要的概念. 抽象类是从多个类中抽象出来的公共模板,提供子类均具有的功能. 接口是从多个类中抽象出来的规范,体现的是规范和实现分离的原则,同时也有效的解决了java单重继承的缺陷 二.抽象类 2.1.抽象类与普通类的区别 抽象类的class前面有abstract关键字,而普通类没有 /* * 抽象类 */ public abstract class Person1 {} /* * 普通类 */ public class P

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

一.什么是异常 从字面上讲,就是不正常的现实就是异常. 程序中的异常也是要在程序运行中才会偶尔发生.如果程序还没有运行,编译就报错,这种不叫异常,这种叫编译错误,通常是语法上的错误 二.java中异常 Java 提供了两类主要的异常:runtime exception 和checked exception.所有的checked exception 是从java.lang.Exception 类衍生出来的,而runtime exception 则是从java.lang.RuntimeExcepti

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

一.继承作用 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法 二.继承实现 类的继承格式 在Java中使用extends关键字完成类的继承关系,操作格式: class 父类{} // 定义父类 class 子类 extends 父类{} // 使用extends关键字实现继承 package com.pb.person; /* * 父类 */ public c

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

一.java中的包 Java文件的组织形式Windows中的文件功能类似 在开发比较大的项目时,不可能只涉及到一个java文件,可能要创建几十,甚至几百个java文件,这个时候,我们就可以使用包,把相关的java文件放在一起,利用包来方便,快捷,有效的管理这些文件 包的引入还可以避免命名冲突的问题,不同包下的类名可以同名 二.定义包 package 包名 这条语句必须放在java源程序的第一行,前面不能有任何可执行代码,当然注释除外 包可以创建多层次的,不同层次之间用点(.)隔开和windows

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

一.什么是多态 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题.多态有两种表现形式:重载和覆盖首先说重载(overload),是发生在同一类中.与什么父类子类.继承毫无关系.标识一个函数除了函数名外,还有函数的参数(个数和类型).也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同.他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可

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

一.Arrays类常用方法 二.简单例子 package com.pb.demo1; import java.util.Arrays; /* * Arrays工具类的中的几个常用方法 * 1.copyof * 2.toString * 3.equals * 4.sort * 5.fill * 6.binarySearch */ public class ArraysTest { public static void main(String[] args) { String [] arry1={"

疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程java任务timerstring 2009-01-16 21:12 6722人阅读 评论(0) 收藏 举报  分类: J2SE(63)  版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天讲了Swing基本的控件,今天开始讲特殊控件.一天讲2个吧,首先讲用JProgressBar,Pro

Java进阶(三十二) HttpClient使用详解

Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是A

Java从零开始学四十(反射简述一)

一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反射.通过反射,Java可以于运行时加载.探知和使用编译期间完全求和的类.生成其对象实体,调用其方法或者对属性设值.所以Java算是一个半动态的语言吧. 反射的概念: 在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方