跟着阿里学JavaDay07——Java基础语法(五)

我们后面的笔记我,打算直接用程序,加注释进行记录。日后若本人有疑问,可进行网络查询加以整理回复

package com.cionda.JavaDemo.dept;

public class JavaDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        dept department = new dept("004","张三");//声明并实例化对象
        System.out.println(department.deptInfo());//引用对象中的deptInfo方法,并打印返回值    
        System.out.println(new dept("003","李四","北京").deptInfo());//这里打印的是匿名对象中的deptInfo方法,使用完毕后,匿名对象即成为垃圾
        //我们可以尝试再次打印department.deptInfo
        System.out.println(department.deptInfo());
    }
}
package com.cionda.JavaDemo.dept;
/**
 * 
 * @author CionDa * 
 *
 */
public class dept {//创建部门类
    /***
     * 日常开发中,我们的成员变量都要用关键字private进行保护
     * 成员变量是写在类里面的
     * 而局部变量是写在方法体里面的
     */
    private String deptno;//员工ID编号
    private String deptname;//员工名字
    private String deptloc;//部门地点
    public dept() {//构造方法
        /***
         * 1、构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样。
         * 2、构造方法不要写返回值类型,连void都不写。
         * 3、构造方法不能return一个具体的返回值。
         * 4、如果没有编写任何构造方法,那么编译器将默认会赠送一个构造方法,没有参数、方法体什么事情都不会做。
         * 5、一旦编写了至少一个构造方法,那么编译器将不再赠送。
         */
        this(null,null,null);//减少代码的重复性,调用形参最多的一个构造方法来使用
    }
    public dept(String deptno,String deptname) {//构造方法重载
        /***
         * (1)概述方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
         * (2)注意事项
         * 如果没有给出构造方法,系统将自动提供一个构造方法
         * 如果给了构造方法,系统将不再提供构造方法
         * 所以最好一直写出无参构造方法public dept()
         */
        this(deptno,deptname,null);
    }
    public dept(String deptno,String deptname,String deptloc) {//这是一个形参最多的一个构造方法
        this.deptno = deptno;//this关键字指向的是同一个类中的对象
        /***
         * 如果这里我们不用this
         * 我们的编译器会误认为,等号左边和右边是同一个对象,输出所有结果为null
         * 为了验证,我们可以拷贝代码进行修改
         * 
         * 我们的this关键字,这里还可以指向同一个类中的方法
         * 例如:上面两个构造方法调用这个构造方法一样
         * 注意:
         * 我们在调用this关键字使用方法时避免进入死循环
         * 例如:
         * public dept() {
         *         this(null,null,null);
         * }
         * public dept(String deptno,String deptname,String deptloc) {
         *         this();
         * }
         * 这样会造成两个方法相互调用,没有停止值,特别是构造方法。没有返回值。最容易进入死循环
         */
        this.deptname = deptname;
        this.deptloc = deptloc;
    }
    
    public String deptInfo() {
        return "员工号:"+this.deptno+"\n员工名字:"+this.deptname+"\n部门地址:"+this.deptloc;
    }
    /***
     * ①我们可以在构造方法里进行对象的赋值
     * ②也可以用getter,setter来进行对象的赋值
     * 例如以下代码段。
     * 构造函数是用于初始化类的属性,且只有在创建对象时才会调用构造函数,用于给对象分配地址
     * 无参的构造函数,创建对象时默认调用,当程序没有明确写出有参的构造函数,系统会默认的创建一个。
     * 有参的构造函数,创建对象时传进参数。
     * setter方法,是对象引用调用setter方法,并传入参数。
     * getter方法,对象调用getter方法,获取对象属性的值。
     * 区别:
     * 构造方法只有在创建对象时才会被“系统”调用且只调用一次, 而getter和setter方法是随时可以被“对象”调用
     * 构造方法不能获取对象属性的值, 而getter可以获取对象的属性值
     */
//    public String getDeptno() {
//        return deptno;
//    }
//    public void setDeptno(String deptno) {
//        this.deptno = deptno;
//    }
//    public String getDeptname() {
//        return deptname;
//    }
//    public void setDeptname(String deptname) {
//        this.deptname = deptname;
//    }
//    public String getDeptloc() {
//        return deptloc;
//    }
//    public void setDeptloc(String deptloc) {
//        this.deptloc = deptloc;
//    }
}

感谢阿里云开发者社区,让我有整套系统的Java学习教程

同时,感谢博客园,让我有一个免费的博客,并让我做笔记学习!!

 

Tags: