1. 继承:

从多个子类中抽象出实例变量以及方法,形成更抽象的父类,避免在子类中的代码重复,维护起来更加方便。检查是否可以使用继承技术的方法是:IS A

对于类A继承自类B,类C继承自类A,那么类C和类A之间也应该满足 IS A 准则。

IS A是单向关系。

“是一个”和“有一个”:

小汽车是一个汽车,那么小汽车这个类可以抽象出汽车类,或者说小汽车继承自汽车类。

浴缸是一个浴室吗?不对!浴缸和浴室的关系应该是:浴室中有一个浴缸!have a的关系,那么浴缸应该是浴室类的一个实例变量。

 

2. 多态:

oo中,声明一个父类的引用:如 Animal a = new Animal(); 多态的实际效果就是。a = new Dog() (Dog Extend Animal)。即 一个父类的引用可以指向一个子类对象。

实际的意义就是:public Animal returnAnimal(Animal a){}  在这个方法中,可以返回一个Animal对象,可以传入一个animal对象,也可以传入和返回任何一个Extend Animal的子类对象。

 

3. 重写(override):

重写就是要求方法签名完全一样,这样才会覆盖掉父类中的同名方法。方法签名:修饰符 返回类型 方法名(参数列表)

 

4. 重载(overload):

重载要求的是参数列表一定要不一样。即子类中可以增加一个和父类中完全一样的方法,但是方法签名不一样,当子类对象调用方法时,根据参数列表来判断应该调用父类中的方法还是子类中的方法。

 

5. 接口:

继承只是个开始,要使用多态,我们还需要接口。Interface 是一种100%纯抽象的类。

 

6. 抽象类:

Animal的对象会是一个什么动物?所有有些类根本就不应该被初始化!抽象类不能初始化!但是可以用抽象类型作为一个引用类型。这也是为何当初要有抽象类型的目的。修饰符:abstract。抽象类是除了被继承之外没有其他用途,没有值,没有目的的类。它可以带有抽象和非抽象的方法。

抽象方法:抽象的方法代表此方法一定要被覆盖过(重写)。抽象的方法没有实体(代码块)。抽象方法只存在抽象类中。如果含有抽象方法,那么该类也是抽象类。

理解oo:继承、多态、重写、重载、接口、抽象类的更多相关文章

  1. 第四课 OOP封装继承多态解析,接口抽象类选择 2019-04-21

    父类 xx = new 子类(); xx.method(); 1 普通方法由编译时决定(左边) --- 提高效率 2 虚方法(virtual)  由运行时决定-- -多态,灵活 3 抽象方法由运行时决 ...

  2. C++学习笔记 封装 继承 多态 重写 重载 重定义

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  3. <python基础>封装,继承,多态,重写,重载

    什么是封装? 所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装.封装是我们所说的面相对象编程的特征之一.除此之外还有继 ...

  4. Java多态机制和继承中重写重载

    关于Java中多态机制 http://www.cnblogs.com/chenssy/p/3372798.html 这篇博文讲的很透彻 大体意思是 多态定义: 多态就是指程序中定义的引用变量所指向的具 ...

  5. Java基础之理解封装,继承,多态三大特性

    目录 封装 继承 多态 封装 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 代码理解 publ ...

  6. [java核心技术01]__继承与多态、重载与重写、抽象类与接口

    前言 前面简单学习了面向对象的知识,知道了其两个重要的特性,继承与多态,今天就围绕着面向对象的这两个特性,将继承与多态及相关的几个几个定义重载与重写,抽象类与接口的相关知识具体学习一下. 类的继承 关 ...

  7. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  8. [转]Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  9. [Java]重载,重写以及继承,多态的区别

    转自:http://android.blog.51cto.com/268543/53181 什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承. ...

  10. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

随机推荐

  1. 第六篇:python中numpy.zeros(np.zeros)的使用方法

    用法:zeros(shape, dtype=float, order='C') 返回:返回来一个给定形状和类型的用0填充的数组: 参数:shape:形状 dtype:数据类型,可选参数,默认numpy ...

  2. 解决国内网络Python2.X 3.X PIP安装模块连接超时问题

    pip国内的一些镜像   阿里云 http://mirrors.aliyun.com/pypi/simple/   中国科技大学 https://pypi.mirrors.ustc.edu.cn/si ...

  3. linux 编辑文档

    本篇主要分享下vi 命令行的操作: vi  /etc/sysconfig/iptabels 首先我们需要理解putty客户端的复制 粘贴 插入文档  退出等命令 复制:指在putty客户端中的选择复制 ...

  4. Linux的链接文件

    Linux的链接文件======================================== Linux的链接文件分为硬链接文件(hard link )和软链接文件( symbolic lin ...

  5. cmf5分页相关

    //分页配置在app/config.php 'paginate' => [ 'type' => '\cmf\paginator\Bootstrap', 'var_page' => ' ...

  6. PHP switch问题

    $a = 0; switch($a){ case $a > 7: echo 234; break; case $a > 2: echo 4556; break; default: echo ...

  7. Dungeon Master(逃脱大师)-BFS

    Dungeon Master Description You are trapped in a 3D dungeon and need to find the quickest way out! Th ...

  8. day23-python之日志 re模块

    1.logging import logging #-----------------------------------logging.basicConfig logging.basicConfig ...

  9. Python中的set

    set_lst = [ ('集合容器不可哈希',), ('集合中的元素必须可哈希',), ('集合是无序的',), ('集合自动去重',), ('增',), ('删',), ('查',), ('集合运 ...

  10. A1035 Password (20)(20 分)

    A1035 Password (20)(20 分) To prepare for PAT, the judge sometimes has to generate random passwords f ...