Java编程练习之this关键字(2)

this关键字除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。

示例:创建一个类文件,在类中定义Book类型的方法,并通过this关键字进行返回。

public class Book{

    public Book getBook(){

          return this;

}

}

在getBook()方法中,方法的返回值为Book类,所以方法体中使用return this这种形式将Book类的对象进行返回。

通过上述可以得知this关键字可以调用类的成员变量和成员方法,此外,它还可以调用类中的构造方法。

示例:使用this关键字实现给饼只加一个蛋

顾客买鸡蛋灌饼要求加几个鸡蛋,烙饼大妈就给加几个鸡蛋,不要求的时候就只加一个鸡蛋。创建鸡蛋灌饼类,创建有参数和无参数构造方法,无参数构造方法调用有参数构造方法并实现初始化。

package zhtestdemo;

public class demo {  //创建鸡蛋灌饼类,类名叫demo;
/**/
    int eggCount;  //属性:鸡蛋灌饼里鸡蛋的个数;
    
    public  demo(int eggCount) {   //有参构造方法demo;
        this.eggCount=eggCount;           //将参数eggCount的值赋给成员变量eggCount;
        System.out.println("这个鸡蛋灌饼里有"+eggCount+"个鸡蛋。");
    }
    //无参数构造方法,默认给饼加一个蛋;
    public demo() {
        //调用参数为鸡蛋灌饼里蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的个数为1;
        this(1);
    }
    public static void main(String[] args) {
        demo cake1=new demo();  //创建无参的鸡蛋灌饼对象
        demo cake2=new demo(5); //创建鸡蛋灌饼对象,且鸡蛋灌饼里有5个蛋
    }
    
}

练习1:设计电池类,在电池类的构造方法中声明一节5号电池的电压为1.5伏,使用this关键字调用电池类中的构造方法,实现电压为9伏的叠层电池,运行结果如下图。

package zhtestdemo;

public class demo {  //创建电池类,类名叫demo;
/**/
    int num;  //属性:5号电池的个数;
    
    public  demo(int num) {   //有参构造方法demo;
        this.num=num;           //将参数num的值赋给成员变量num;
        if (num==1) {
        System.out.println(num+"节5号电池的电压为1.5V。");
        }else {
            System.out.println("叠层电池可由"+num+"节5号电池串联而成,其电压为9.0V。");
        }
    }
    //无参数构造方法,默认1节5号电池;
    public demo() {
        //调用参数为电池个数的构造方法,并设置电池数量为1;
        this(1);
    }
    public static void main(String[] args) {
        demo battery1=new demo();  //创建无参的1节5号电池对象;
        demo battery2=new demo(6); //创建6节5号电池对象;
    }
    
}
 

练习2:创建信用卡类,有两个成员变量分别是卡号和密码,如果用户开户时没有设置初始密码,则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。

package zhtestdemo;

public class demo {  //创建信用卡类,类名叫demo;
/**/
    String card;  //属性:信用卡号;
    String password;  //属性:信用卡密码;
    
    public  demo(String password) {   //有参构造方法demo,;
        this.password= password;    //将参数password的值赋给成员变量password;
        System.out.println("您正在开户未设置初始密码,请输入默认密码:"+password);
    }
    //有参数构造方法,用于重置密码的用户确认密码;
    public demo(String card,String password) {
        this.card=card;
        this.password=password;
        System.out.println("恭喜您开户成功!"+'\n'+"请您确认账号:"+card+'\n'+"请您确认密码:"+password);
    }
    public static void main(String[] args) {
        demo card1=new demo("123456");  //创建未设置初始密码的信用卡对象;
        demo card2=new demo("8888888","324567"); //创建已设置密码的信用卡对象;
    }
    
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值