你 new 出来的不仅是一个对象,更是一段陪伴、一份慰藉。你孤独的时候想有人和你说说话。而真正的那个她,也一定会出现,和你肩并肩看代码、看星星。
项目结构
SweetGirlfriendSimulator/
├── src/
└── com/
└── love/
├── Main.java // 启动类
├── Person.java // 抽象人类
├── IdealGirlfriend.java // 理想女友类(可爱温柔)
└── CoolGirlfriend.java // 拓展:高冷型女友(多态演示)
Person.java
package com.love;
public class Person {
protected String name;
protected int age;
protected String personality;
public Person(String name, int age, String personality) {
this.name = name;
this.age = age;
this.personality = personality;
}
public void introduce() {
System.out.println("你好,我是 " + name + ",今年 " + age + " 岁,性格是:" + personality);
}
public void dailyMessage() {
System.out.println("今天又是努力向前的一天,要记得多喝水喔~");
}
}
IdealGirlfriend.java(可爱温柔型)
package com.love;
public class IdealGirlfriend extends Person {
private String hobby;
private boolean alwaysWithYou;
public IdealGirlfriend(String name, int age, String personality, String hobby) {
super(name, age, personality);
this.hobby = hobby;
this.alwaysWithYou = true;
}
public void saySweetWords() {
System.out.println("亲爱的,我今天有乖乖想你哟~ (。♥‿♥。)");
}
public void cheerYouUp() {
System.out.println("无论发生什么,我都会陪着你哒!你是我最棒的程序员男友 💻❤️");
}
public void datePlan() {
System.out.println("我们一起去图书馆复习,再买奶茶看晚霞,好不好呀?✨");
}
public void hug() {
System.out.println("(轻轻抱住你)要抱抱就说嘛,不许难过~");
}
public String getHobby() {
return hobby;
}
public boolean isAlwaysWithYou() {
return alwaysWithYou;
}
}
CoolGirlfriend.java
package com.love;
public class CoolGirlfriend extends IdealGirlfriend {
public CoolGirlfriend() {
super("小冷", 21, "高冷毒舌", "默默打游戏陪你");
}
@Override
public void saySweetWords() {
System.out.println("别傻了,我才没想你呢……(小声:其实一直在想)");
}
@Override
public void cheerYouUp() {
System.out.println("烦恼就扔了吧,抱一个就好,不准哭。");
}
}
Main.java
package com.love;
public class Main {
public static void main(String[] args) {
System.out.println("🎀 欢迎使用 SweetGirlfriendSimulator 🎀\n");
// 可爱温柔型女友
IdealGirlfriend gf = new IdealGirlfriend("小智", 20, "可爱温柔", "陪你写代码");
gf.introduce();
gf.saySweetWords();
gf.cheerYouUp();
gf.datePlan();
gf.hug();
System.out.println("她的爱好是:" + gf.getHobby());
System.out.println("她是否永远陪着你?" + (gf.isAlwaysWithYou() ? "当然啦!" : "她累了"));
System.out.println("\n————————————\n");
// 多态演示:高冷型女友
IdealGirlfriend coldGf = new CoolGirlfriend(); // 父类引用指向子类对象
coldGf.introduce();
coldGf.saySweetWords(); // 调用的是 CoolGirlfriend 的重写方法
coldGf.cheerYouUp();
}
}
知识
一、封装(Encapsulation)
用法:
将属性 name、age、personality、hobby、alwaysWithYou 定义为私有(private),并通过构造器和 getter/setter 控制访问。
解释:
把对象的状态(属性)和行为(方法)封装在类中,并通过方法对外暴露操作接口,保护内部数据不被随意更改。
项目体现:
private String hobby;
public String getHobby() { return hobby; }
public void setHobby(String hobby) { this.hobby = hobby; }
二、继承(Inheritance)
用法:
类 IdealGirlfriend 继承了 Person 类;CoolGirlfriend 进一步继承自 IdealGirlfriend。
解释:
子类可以继承父类的属性和方法,实现代码重用与扩展,形成类之间的层级关系。
项目体现:
public class IdealGirlfriend extends Person
public class CoolGirlfriend extends IdealGirlfriend
三、多态(Polymorphism)
用法:
我们通过 Person 或 IdealGirlfriend 类型的引用,调用实际是 CoolGirlfriend 重写后的方法。
解释:
同一父类引用,执行不同子类的行为。调用方法时会根据对象的真实类型自动绑定对应的实现,增强了程序的灵活性与扩展性。
项目体现:
IdealGirlfriend coldGf = new CoolGirlfriend(); // 多态
coldGf.saySweetWords(); // 实际调用 CoolGirlfriend 的实现