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程序至关重要。

    上一篇:Java基础编程
    下一篇:JavaSEday09学习

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月27日 23时43分31秒