13-Java-面向对象-封装和this关键字

文章目录


封装

  • 告诉我们,如何正确设计对象的属性和方法。
  • 原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为
java 复制代码
package common;

/**
 * @Author: 大海
 * @Date: 2025-09-06
 */

public class GirlFriend {
    /*
    private关键字是一个权限修饰符
    可以修饰成员(成员变量和成员方法)
    被private修饰的成员只能在本类中才能访问
    */
    private String name; 
    private int age;
    private String gender;

    public void setAge(int age) {
        if (age > 18 && age < 30) {
            this.age = age;
        } else {
            System.out.println("年龄不符合要求!");
        }
    }

    public void setName(String name) {
  
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }


    public void eat() {
        System.out.println("正在吃饭...");
    }

    public void sleep() {
        System.out.println("正在睡觉...");
    }
}
java 复制代码
import common.GirlFriend;

public class study_14_封装 {
    public static void main(String[] args) {

        // 创建对象
        GirlFriend girlFriend = new GirlFriend();
        // 赋值
        girlFriend.setName("小芳");
        girlFriend.setAge(20);
        girlFriend.setGender("女");
        // 取值
        System.out.println("姓名:" + girlFriend.getName());
        System.out.println("年龄:" + girlFriend.getAge());
        System.out.println("性别:" + girlFriend.getGender());

        girlFriend.eat();
        girlFriend.sleep();
    }
}

this关键字

  • 作用:可以区别成员变量和局部变量
  • 本质:所在方法调用者的地址值
java 复制代码
package common;

/**
 * @Author: 大海
 * @Date: 2025-09-06
 */

public class GirlFriend {
    /*
    private关键字是一个权限修饰符
    可以修饰成员(成员变量和成员方法)
    被private修饰的成员只能在本类中才能访问
    */
    private String name; // 成员变量
    private int age;
    private String gender;

    public void setAge(int age) {
        // 就近原则
        System.out.println(age); // 20
        System.out.println(this.age); // 0
        if (age > 18 && age < 30) {
            this.age = age;
        } else {
            System.out.println("年龄不符合要求!");
        }

    }

    public void setName(String name) {
        // 局部变量表示测试类中调用方法传递过来的数据
        // 等号左边:表示成员位置的name
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }


    public void eat() {
        System.out.println("正在吃饭...");
    }

    public void sleep() {
        System.out.println("正在睡觉...");

    }
}
java 复制代码
import common.GirlFriend;

public class study_14_封装 {
    public static void main(String[] args) {

        // 创建对象
        GirlFriend girlFriend = new GirlFriend();
        // 赋值
        girlFriend.setName("小芳");
        girlFriend.setAge(20);
        girlFriend.setGender("女");
        // 取值
        System.out.println("姓名:" + girlFriend.getName());
        System.out.println("年龄:" + girlFriend.getAge());
        System.out.println("性别:" + girlFriend.getGender());

        girlFriend.eat();
        girlFriend.sleep();
    }
}
相关推荐
野犬寒鸦12 分钟前
今日面试之项目拷打:锁与事务的深度解析
java·服务器·数据库·后端
ajassi200028 分钟前
开源 java android app 开发(十五)自定义绘图控件--仪表盘
android·java·开源
FrankYoou31 分钟前
Spring Boot 自动配置之 TaskExecutor
java·spring boot
爱读源码的大都督32 分钟前
Spring AI Alibaba JManus底层实现剖析
java·人工智能·后端
间彧39 分钟前
ReentrantLock与ReadWriteLock在性能和使用场景上有什么区别?
java
Lbwnb丶41 分钟前
p6spy 打印完整sql
java·数据库·sql
间彧42 分钟前
公平锁与非公平锁的选择策略与场景分析
java
渣哥43 分钟前
锁升级到底能不能“退烧”?synchronized 释放后状态解析
java
间彧1 小时前
Java ReentrantLock详解与应用实战
java
间彧1 小时前
volatile与Atomic类的性能对比与适用场景分析
java