
JavaSE学习day10
模拟实现一个基于文本界面的客户关系管理系统。 熟悉面向对象编程。 主要涉及的知识点:
继承性:子类继承父类后,当创建子类对象时,堆空间中除了子类自身属性外,还会加载所有父类属性。当权限允许时,子类对象可以访问父类属性和方法。 构造过程:当使用 内存表现:在堆空间中,只存在一个唯一的子类对象,该对象同时包含子类和父类的属性和方法。
发布日期:2021-05-18 05:20:13
浏览次数:27
分类:精选文章
本文共 2992 字,大约阅读时间需要 9 分钟。
day10 授课笔记:客户关系管理系统
项目:客户关系管理系统
目的
- 类结构的使用:属性、方法和构造器
- 对象的创建和使用
- 类的封装性
- 数组的声明和使用(插入、删除、替换)
this
关键字
知识点1:子类对象实例化的过程
解释
new
关键字创建子类对象时,子类构造器会被调用,进而间接或直接调用父类构造器,直到java.lang.Object
的构造器为止。代码示例
public class Person { String name; int age; int id = 1001; public void eat() { System.out.println("人:吃饭"); } public void walk() { System.out.println("人:走路"); }}public class Man extends Person { boolean isSmoking; int id = 1002; public void eat() { System.out.println("男人:多吃肉,长肌肉"); } public void walk() { System.out.println("男人:笔挺的走路"); } public void earnMoney() { System.out.println("男人挣钱养家..."); }}
知识点2:多态性的应用
概念
多态性是面向对象编程的重要特征之一,主要体现在以下几个方面:
广义多态性:
- 方法重写(覆盖):子类重定义父类的方法,拥有更强的具体性。
- 子类对象的多态性:父类引用可以指向子类对象。
- 类型提升:向下转型和多态性密切相关。
子类对象的多态性:
- 引用变量可以引用子类对象。
- 当编译器执行时会调用父类定义的方法,但在运行时会根据子类重写的方法执行。
- 编译看左边(父类方法定义),运行看右边(子类方法实现)。
代码示例
public class PersonTest { public static void main(String[] args) { Person p1 = new Person(); Man m1 = new Man(); p1.eat(); // 调用Person类的eat方法 p1.walk(); // 调用Person类的walk方法 m1.eat(); // 调用Man类的eat方法 m1.earnMoney(); // 调用Man类的earnMoney方法 // 多态性的应用 Person p2 = new Man(); p2.eat(); // 调用Man类的eat方法 p2.walk(); // 调用Man类的walk方法 // p2.earnMoney(); // 此处会报错,因为Person类没有 earnMoney方法 System.out.println(p2.id); // 输出1002 }}
知识点3:向下转型
概念
向下转型是多态性的一种应用,使用instanceof
关键字进行强制类型转换。由于Java本身对类型安全的要求,向下转型必须谨慎操作。
代码示例
public class PersonTest { public static void main(String[] args) { Person p3 = new Woman(); if (p3 instanceof Woman) { Woman w2 = (Woman) p3; System.out.println("可以转换为Woman"); } if (p3 instanceof Man) { Man m3 = (Man) p3; System.out.println("可以转换为Man"); } if (p3 instanceof Person) { System.out.println("person ......"); } if (p3 instanceof Object) { System.out.println("Object ......."); } }}
实际应用场景
数据库连接管理
public abstract class Connection { public abstract void getConnection(); public abstract void closeConnection();}public class MySQLConnection extends Connection { public void getConnection() { System.out.println("连接到MySQL"); }}public class OracleConnection extends Connection { public void getConnection() { System.out.println("连接到Oracle"); }}public class DBUtil { public static Connection getConnection(String type) { if (type.equals("mysql")) { return new MySQLConnection(); } else if (type.equals("oracle")) { return new OracleConnection(); } else { System.out.println("错误:无法识别数据库类型!"); return null; } }}
总结
通过本次学习,我对子类对象实例化过程、多态性及其应用以及向下转型有了更深刻的理解。这三者是面向对象编程的核心原理,掌握了它们的使用方法对于开发高质量的Java程序至关重要。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月27日 23时43分31秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
编译android源代码(aosp)
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
伴随矩阵和逆矩阵的关系证明
2019-03-12
Form窗体属性
2019-03-12
解决Eclipse加载图片或网页出现404错误
2019-03-12
vue 错误收集
2019-03-12
Java选择排序算法实现
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13
Rabbitmq的内存磁盘监控
2019-03-13
访问servlet时弹出文件下载框解决方法
2019-03-13
IDEA-@Slf4j和log标签&@Data(Lombok)无效
2019-03-13