Java学习记录(二)

本文介绍了如何在Java面向对象编程中使用封装思想,以GirlFriend类为例,展示了如何使用private修饰成员变量以控制数据的访问。通过setName和getName方法,实现了对私有变量的间接访问,同时演示了年龄值的验证机制。
摘要由CSDN通过智能技术生成

面向对象的编程学习

封装思想;

在一些类中不想被其他类访问或改变的一些数据,可以用private进行处理

用private定义的成员变量无法在其他类中访问,但可以通过类似于下列setName和getName在创建对象时访问用private定义的成员变量。

例如:我想定义一个GirlFriend类,在创建对象时,不想让其他类创建对象时随意输入该对象的年龄

package test1;

public class GirlFriend {
    private String name;
    private int age;
    private String gender;

    public GirlFriend() {
    }

    public GirlFriend(String name, int age, String gender) {
        this.name = name;
        if(age == 20){this.age = age;}
        else{
            System.out.println("年龄不是你想猜,想猜就能猜");
        }
        this.gender = gender;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        if(age == 20){this.age = age;}
        else{
            System.out.println("年龄不是你想猜,想猜就能猜");
        }
    }

    /**
     * 获取
     * @return gender
     */
    public String getGender() {
        return gender;
    }

    /**
     * 设置
     * @param gender
     */
    public void setGender(String gender) {
        this.gender = gender;
    }

    public String toString() {
        return "GirlFriend{name = " + name + ", age = " + age + ", gender = " + gender + "}";
    }
    public void sing(){
        System.out.println("我能唱歌");
    }
}

测试代码GirlFriendTest

package test1;

public class GirlFriendTest {
    public static void main(String[] args) {
        GirlFriend k = new GirlFriend();
        k.setName("小蕾");
        k.setAge(25);
        k.setGender("女");
        System.out.println("姓名:" + k.getName());
        System.out.println("年龄:" + k.getAge());
        System.out.println("性别:" + k.getGender());
        k.sing();
    }

}

此时因为创建对象时输入的年龄不是20,没有触发this关键字,即this.age = age,所以打印出的年龄结果应该是0,因为在getAge方法里,return的age在没有使用this关键字的情况下,会自动选择离他近的成员变量age进行return,而在定义int类型的成员变量时,默认值为0,即在控制台年龄会输出为0.

而在输入年龄为20的时候,在this.age = age下,则把输入的age传递给GirlFriend类里的age,而在getAge方法里也会就近的选择成员变量age,但由于成员变量里的age已经变成传递来的20,则在getAge方法里返回的就是20.

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值