学习java也快一年多了,看过很多方面的书,也喜欢在网络上学习的java资料。但是每当自己打开myeclipse时,总是那么的不自信…………,java基础部分的内容自己以及掌握,并能很好运用,加油吧,多实践,多总结,一定会有所突破的。老银每天进步一点点。 总结一下,自己看过的资料上好的列子。 1:java面向对象特征:抽象,封装,继承,多态。 抽象: 封装: 继承: 多态: 写一个类,来完成以上所包含的抽象,封装,继承内容 class LaoYin extends Thread implements Runnable{ Java多态的内存机制是Java面向对象编程中的一个重要概念,它是通过抽象、封装、继承等特性来实现的。多态允许我们使用父类类型的引用指向子类对象,从而调用子类特有的方法或属性,实现了代码的灵活性和可扩展性。 在Java中,多态的实现主要依赖于以下两个关键机制: 1. **方法的重写(Override)**:子类可以重写父类中的非final和非静态方法。当父类引用指向子类对象时,如果调用的是被重写的方法,那么实际执行的是子类的方法。例如,在`DuoTai`类中定义了一个`cry()`方法,`Cat`和`Dog`类分别重写了这个方法,因此在`main`方法中创建`DuoTai`类型的`an`和`ni`对象,实际上分别指向`Cat`和`Dog`实例,调用`cry()`时,会打印出"喵喵"和"汪汪叫",这就是多态的体现。 2. **数据成员的隐藏(Hiding)**:子类可以有自己的同名成员变量,这被称为隐藏。在`DuoTai`类中定义了`count`变量,`Cat`和`Dog`类中也定义了同名的`count`,这会导致子类的`count`变量隐藏了父类的`count`。当我们通过父类引用访问`count`时,实际访问的是父类的`count`,而不是子类的`count`。所以即使子类中`count`的值被赋为了5和50,但通过`an.count`和`ni.count`打印出来的结果仍然是100,这是因为在内存中,父类引用并没有直接指向子类的成员变量,而是指向了自己的成员变量。 在内存模型中,多态的表现如下: - **栈区(Stack)**:存储局部变量,包括父类引用。在`main`方法中,`an`和`ni`都是`DuoTai`类型的引用,它们被存储在栈区。 - **堆区(Heap)**:存放对象实例。`an`和`ni`实际上指向的是在堆区创建的`Cat`和`Dog`对象。 - **方法区(Method Area)**:保存类的信息,如类名、方法信息、常量池等。父类和子类的类信息都存储在这里,包括各自的方法和成员变量。 当通过父类引用调用方法时,实际执行的是子类的方法,这是因为JVM在运行时会动态绑定(也称为晚期绑定或动态分派),根据实际的对象类型来决定调用哪个版本的方法。而访问成员变量时,则遵循静态绑定(早期绑定),即根据引用的类型来确定访问哪个版本的变量,即使引用指向的是子类对象。 多态能够提高代码的复用性和灵活性,使得程序在面对不同类型的对象时能够以统一的方式处理。例如,在`DuoTai`类中,尽管没有指定具体是哪种动物,但可以通过`cry()`方法来调用不同动物的叫声,这就是多态的优势。 Java多态的内存机制是通过对象在堆区的实例化,以及栈区的引用指向这些实例,结合方法的重写和数据成员的隐藏来实现的。理解和熟练运用多态,能够帮助开发者写出更加优雅和高效的代码。






















- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2022年C语言程序设计A课程形成性考核作业.doc
- 五章系统安全评价技术.pptx
- 中信数码冲印网络营销策划书.doc
- 医疗行业无线网络解决方案.docx
- 软件资产管理在企业中的应用.pptx
- 软件工程图书管理系统(2).doc
- 中国智慧城市体验中心分析报告PPT课件.ppt
- 计算机基础知识试题6.doc
- 基于工程应用的VB与ANSYS接口问题及二次开发.docx
- 硕士本科论文办公自动化系统的设计与实现.pdf
- 建设工程项目管理工作用表.doc
- 2022年下半年软件设计师模拟真题与答案解析上午选择与下午案例计算机软考.doc
- 智慧交通应用解决方案.docx
- 数据库使用协议.doc
- 电力二次系统安全防护方案.doc
- 项目管理九大管理工具.pdf



评论0