`
nigel521
  • 浏览: 12006 次
社区版块
存档分类
最新评论

黑马程序员——java中的多态

 
阅读更多

------- android培训java培训、期待与您交流! ----------

一。表现:

父类或者接口的引用指向了或者接收了自己的子类对象。

 

二。前提:

1,类与类之间要有关系。继承,实现。

2,通常都会有覆盖。

 

三。好处:

预先定义的程序可以运行后期程序的内容。

增强了程序的扩展性。

 

四。弊端:

虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。

不能预先使用子类中定义的特有功能。

 

五。多态的注意事项:

在代码中。

对于成员函数:Fu f = new Zi(); f.method();

编译时期:看左边。

运行时期:看右边。

因为成员函数有一个覆盖操作。

       毕姥爷和毕老师的故事。

 

      

对于非私有的实例变量,

静态变量,静态方法。

 

编译和运行都看左边。

 

老师要求记住结论。有空闲时间,就想想为什么?

 

六。转型。

子类对象被父类引用:子类对象在向上转型。

将指向子类对象的父类应用转换成子类类型引用:向下转型。

 

毕姥爷和毕老师的故事。

class 毕姥爷

{}

 

class 毕老师 extends 毕姥爷

{}

 

毕姥爷 ly = new 老师();//老师向上转型为了毕姥爷。向上转型

 

老师 ls = (老师)ly; //将代表毕老师对象的父类引用ly强制转换成了毕老师类型。向下转型。

 

 

 

七。应用

电脑使用。主板运行。

 

class MainBoard

{

       public void run()

       {

              //主板运行;

       }

       public void usePCI(PCI p)//PCI p = new NetCard();

       {

              if(p!=null)

              {

                     p.open();

                     p.close();

              }

       }

}

 

 

//为了提高主板功能的扩展性。

//定义了规则。让后期的出现的功能板块,只要覆盖该规则,就可以被这个主板使用。

interface PCI

{

       void open();

       void close();

}

 

 

 

 

class MainDemo

{

       public static void main(String[] args)

       {

              MainBoard mb = new MainBoard();

              mb.run();

              mb.usePCI(null);

              mb.usePCI(new NetCard());

 

 

 

       }

}

 

 

class NetCard implements PCI

{

       public void open(){}

       public void close(){}

}

 

 

Object:java中所有对象的直接或者间接的父类。

       它里面的方法都所有对象都具备的。

       常见方法:

       boolean equals(Object obj):用于比较两个对象是否相同。

       String toString(): 获取对象的字符串表现形式类名@哈希值 

              getClass().getName()+"@"+Integer.toHexString(hashCode());

       Class getClass():获取正在运行的对象所属的字节码文件的对象。也就是说如果Demo d = new Demo();

                            d.getClass():获取的就是d执行的对象所属的字节码文件Demo.class对象。

      

       通常在自定义对象时,因为对象中都有自己特有的描述,

       所以都会建立对象自身的特有比较方法,或者字符串表现形式。

       也就是说,会覆盖Object中的方法。

 

 

/*

Demo d1 = new Demo();

Demo d2 = new Demo();

d1.getClass() ==  d2.getClass();

*/

 

 

class Demo //extends Object

{

       public String toString()

       {

              this.getClass().getName()+"#"+Integer.toHexString(this.hashCode());

       }

}

      

 

class Fu

{

       void show(){System.out.println("fu show");}

}

class Zi extends Fu

{

       void function()

       {

              super.show();

              //this.show();

       }

       void show(){System.out.println("zi show");}

}

 

分享到:
评论

相关推荐

    黑马程序员入学Java知识——精华总结.doc

    - **健壮性**:Java有严格的类型检查和异常处理机制,能减少程序中的错误。 - **高效性**:虽然Java是解释型语言,但JVM通过即时编译(JIT)提升运行效率。 3. **JRE与JDK的区别**: JRE(Java Runtime ...

    黑马程序员入学Java知识——精华总结

    "黑马程序员入学Java知识——精华总结"这份文档很可能包含了Java编程的基础到进阶的知识点,旨在帮助初学者快速掌握Java的核心概念和技能。 1. **Java基础知识**:Java是一种面向对象的语言,它的基础包括语法、...

    黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc

    在本文中,我们将讨论Java语言中的一种重要概念 —— 多态(Polymorphism)。多态是面向对象编程(OOP)中的一个核心概念,它允许我们编写更加灵活和可扩展的代码。 一、多态的体现 多态的体现是指父类的引用指向...

    黑马程序员_Java基础辅导班教程课件[第01期]第8天

    1. **面向对象编程(OOP)**:Java是一门面向对象的语言,第8天的课程可能会重点讲解OOP的四大特性——封装、继承、多态和抽象。封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式;继承允许一个类(子类)...

    黑马程序员_(适合初学者入门的Java基础视频)

    3. **面向对象编程**:深入讲解Java的核心特性——面向对象编程,包括类的定义、对象的创建与使用、封装、继承和多态等概念。 4. **数组和集合框架**:介绍数组的使用,以及ArrayList、LinkedList、HashSet、...

    2018-2019年黑马最新版Java程序员面试宝典+题库pdf

    《2018-2019年黑马最新版Java程序员面试宝典+题库pdf》是一份集合了近年来Java编程领域重点知识和面试常见问题的综合资源。这份资料主要针对初级Java程序员,旨在帮助他们巩固基础知识,掌握面试技巧,以便在求职...

    初学Java傻瓜版-第2版

    "初学"标签表明了它的目标受众,而"java"标签则明确指出了主题——Java编程语言。"清晰"和"高清"的标签可能指的是书籍内容的易读性和提供的PDF质量。 在本书中,读者将逐步了解Java语言的基础概念,包括但不限于: ...

    八股文知识点汇总——Java面试题指南

    以上只是Java面试题的一部分,涵盖了许多基础知识,对于Java程序员来说,深入理解这些概念和原理对于职业发展至关重要。其他面试题如集合、异常处理、IO/NIO、反射、序列化、注解、多线程并发、JVM优化、数据库技术...

    毕向东0801视频

    《毕向东0801视频》是一套针对Java初学者的教育视频,主要讲解了Java编程语言中的一个重要概念——多态。多态是面向对象编程的三大特性之一,与封装和继承并列,是理解面向对象编程的关键。在这个系列的视频中,毕...

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    java面试笔试题库java学习比较开发教程互联网公司面试资料大全合集: 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf

    Java程序设计任务驱动式教程

    1. **Java基础**:介绍Java的历史、特点、开发环境搭建(如JDK安装与配置)以及第一个Java程序——"Hello, World!"的编写。 2. **语法基础**:包括数据类型、变量、运算符、流程控制(如条件语句、循环语句)、数组...

    java视频教程_黑马Java零基础辅导班[第二期]01天PPT

    本教程——"java视频教程_黑马Java零基础辅导班[第二期]01天PPT",正是针对这部分人群设计的,旨在帮助零基础的学员快速理解和上手Java。 课程内容以第一天的"基础知识"为主题,由讲师冯佳深入浅出地讲解Java的核心...

    毕向东java0604

    【标题】"毕向东java0604"指的是由知名IT教育机构黑马程序员的讲师毕向东教授的一堂关于Java编程的课程,这节课的主题聚焦在第6天的第4部分内容。在Java学习的过程中,第6天通常是面向对象编程(Object-Oriented ...

    java视频教程_黑马Java零基础辅导班[第二期]09天课件源码

    《Java编程之旅:黑马程序员零基础辅导班课程详解》 在IT行业中,Java语言以其强大的跨平台能力和丰富的库支持,始终占据着重要的地位。对于初学者来说,掌握Java开发技术是进入这个领域的关键一步。本教程针对零...

    毕向东0702视频

    1. 黑马程序员_毕向东_Java基础视频教程第07天-05-面向对象(子父类中函数的特点-覆盖).avi:这个文件讲述了子类如何重写(覆盖)父类的方法,这是继承的一个关键特性。在Java中,子类可以提供自己的实现,以扩展或...

    黑马培训视频

    毕业设计阿里运动网,Java 适合用于Java提升”说明这个培训课程可能包含了一个毕业设计项目——阿里运动网的开发过程。通过这样的实战项目,学员可以学习到如何在实际环境中应用Java语言,提升自己的编程技能。同时...

Global site tag (gtag.js) - Google Analytics