多态:相同的行为,不同的实现。

多态分为:静态多态和动态多态。

静态多态:在编译期即确定方法的实现和效果。——使用重载实现

动态多态:运行后才能确定方法的实现和执行效果。——使用动态绑定和重写实现

动态绑定技术:引用数据类型转换、instanceof关键字

引用数据类型转换:向上转型:父类的引用指向子类的对象。

向下转型:运行起来后,确实是本类引用指向本类对象或者指向子类对象,才能成功。

instanceof关键字:用于判断运行时对象的真正类型,判断对象是否是某个类的实例。返回true/false。

用法:对象 instanceof 类名

多态的应用:多态参数:就是方法的形参是一个引用的时候,该引用兼容的任何对象都可以传递给该方法。

多态集合:就是存放不同数据类型的集合。例如: Object[]

抽象(abstract):

当abstract修饰方法的时候,该方法为抽象方法,表示类有这个方法,该方法的实现由子类完成。

当abstract修饰类的时候,该类为抽象类,抽象类不能产生对象。

注意:1、有抽象方法的类一定是抽象类

2、抽象类不一定有抽象方法(语法允许)

3、抽象类除了用abstract修饰外,其它跟普通类一样,属性,构造(给子类用),已实现的方法等等。

4、子类在继承抽象类的时候,必须重写父类全部抽象方法,否则这个类也是抽象类。

abstract与final修饰类的比较:

abstract设计父类,不能产生对象,能继承。

final设计最终类,不能被继承,能产生对象。

day14 多态与抽象的更多相关文章

  1. Java面向对象理解_代码块_继承_多态_抽象_接口

    面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...

  2. Java中的继承、封装、多态、抽象

    1.继承 java 和某些面向对象语言(如 c++)在实现继承的不同之处在于java只支持单继承,不支持多重继承.即java 中一个类只能继承于另一个类.我们将被继承的类称之为父类(基类),继承类称之 ...

  3. java面向对象编程--第九章 多态和抽象

    9.1多态 在生物学中,是指一个生物或物种可以有多种不同的形式或阶段: 在OOP中,多态是指一个对象有多种形式的能力. 多态可以说是面向对象编程的精髓所在.java中之所以引入多态的概念,原因之一是它 ...

  4. Java学习笔记之——多态、抽象

    1. 多态 多态:同一种事物调用同一个方法有不同的表现行为.(同一类型操作,作用于某一类对象,可以有不同的解释,产生不同的执行结果) 应用场景;当你定义一个功能性的方法可以使用多态的概念 前提:子类继 ...

  5. Java面向对象的基本概念(对象、封装、继承、多态、抽象、接口、泛型)

    对象:是一个自包含的实体,用一组可识别的特征和行为来标识. 类:具有相同的属性和功能的对象的抽象合集.(类关键字class,首字母大写). 实例:就是一个真实的对象. 实例化:创建对象的过程,关键字是 ...

  6. JAVA四大特征:封装,继承,多态,抽象

    1,封装 将对象的属性和方法组合成一个独立的整体,隐藏实现的细节,并提供对外访问的接口. 封装的好处: (1):隐藏实现细节.好比你买了台电视机,你只需要怎么使用,并不用了解其实现原理. (2):安全 ...

  7. java面向对象(封装,继承,多态,抽象,接口的定义和实现)

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

  8. 关于继承、封装、多态、抽象和接口(Java)

    1.继承:    通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类.已有的称为父类,新的类称为子类(父类派生子类,子类继承父类). (1)继承的优点:①代码的可重用性: ②父类的属性的方 ...

  9. C#封装、多态、抽象、接口、匿名方法等学习

    1:封装 将对象进行封装,并不等于将整个对象完全包裹起来,而是根据实际需要,设置一定的访问权限,用户根据不同的权限调用对象提供的功能,在C#语言中,可以使用修饰符public.internal.pro ...

随机推荐

  1. 用java构造一个带层次的文件目录遍历器

    import java.util.List; import java.io.File; import java.util.ArrayList; public class IteratorUtil { ...

  2. 经验分享(Android开发)

    以前对于Android开发一点了解都没有,当然,以前觉得是一件很高大上的事情,而且是我没有能力去做的工作,但是在这个小组合作开发Android后,我觉得我有了很大的进步,当然我的进步也是Android ...

  3. 【动态规划】POJ-3176

    一.题目 Description The cows don't use actual bowling balls when they go bowling. They each take a numb ...

  4. 《TCP/IP 详解 卷1:协议》第 9 章:广播和本地组播(IGMP 和 MLD)

    我已经懒了,卷一已经是去年年底看完的,但怎么说卷一的坑开了就要填完啊-- 广播和本地组播(IGMP 和 MLD) 引言 有 4 种 IP 地址,单播(unicast).任播(anycast).组播(m ...

  5. 转 JS模块化简单实现

    git示例地址:https://github.com/wufenfen/requireJS-Demo.git

  6. Scrum 项目7.0——第一个Sprint的总结和读后感

          总结: 通过这一次的Sprint,我了解了Sprint的整个流程,也学会了编制backlog,也了解了在软件工程中,一个团队的任务是怎么样分配和一个项目是怎么样开展的.从对软件工程的认识只 ...

  7. JabRef学习笔记(一)

    JabRef简介 JabRef is an open source bibliography reference manager. The native file format used by Jab ...

  8. matlab for 运算的提速

    [1]主要思想:matlab是按列存储,定义s(nums,1)比定义s(1,nums)要快哦                       需要重复query的元素看看能不能再for之前就定义好 经典案 ...

  9. struts下载文件

  10. DAY3-Python学习笔记

    1.元类:动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的,不是定义死了,而是可以随时随地添加的 type():查看一个类型或变量的类型又可以创建出新的类型 c ...