OOP三大特性:封装,继承,多态

封装的目的:为了让类更安全
封装的做法:
1.类里面的成员变量做为private
2.使用成员方法来间接访问成员变量
3.在该方法里面加限制条件

php类里面不允许出现同名方法

继承
概念:子类可以集成父类的一切
方法重写:在子类里面对父类方法的重写
特点:单继承:一个字类只能有一个父类,一个父类可以派生出多个子类
override 函数重写
overrload 函数重载->编译多态

extends 继承父类关键词
parent ::say() 调用父类的方法

多态 (运行多态)

概念:当父类引用指向子类实例,有于子类里面对父类的方法进行了重写,
父类引用在调用该方法的时候表现出的不同状态
条件:
1. 必须发生在继承下
2 .必须重写父类方法
3 .父类引用调用该方法

//函数重载
//在类里面写多个同名方法来实现不同功能
/*public string Show()
{
return "显示";
}
public string Show(string a)
{
return a+"显示";
}
public string Show(string a,string b)
{
return a+b+"显示";
}
public string Show(int b)
{
return b+"数字";
}*/

//1.函数名必须相同
//2.参数个数不同或参数类型不同

//例子:求两个圆之间的阴影面积
/*$maxr = 20;
$minr = 10;
$mj = 3.14*$maxr*$maxr - 3.14*$minr*$minr;

class Yuan
{
//代表半径
public $r;

function __construct($n)
{
$this->r = $n;
}

//求面积的方法
function MJ()
{
return 3.14*$this->r*$this->r;
}
}

$r1 = new Yuan(20);
$r2 = new Yuan(10);

$mianji = $r1->MJ()-$r2->MJ();*/

overload与override的区别

override(重写,覆盖) 
1、方法名、参数、返回值相同。 
2、子类方法不能缩小父类方法的访问权限。 
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 
4、存在于父类和子类之间。 
5、方法被定义为final不能被重写。

overload(重载,过载) 
1、参数类型、个数、顺序至少有一个不相同。   
2、不能重载只有返回值不同的方法名。 
3、存在于父类和子类、同类中。

方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。 
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了.

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载.

1. Override 特点 
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

2.Overload 特点 
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int)); 
2、不能通过访问权限、返回类型、抛出的异常进行重载; 
3、方法的异常类型和数目不会对重载造成影响; 
4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

转载于:https://www.cnblogs.com/benpaodegegen/p/5993700.html

类的 三大特性 封装,继承,多态 overload与override的区别相关推荐

  1. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  2. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  3. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  4. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  5. 三大特征 封装 继承 多态

    ''' 1.面向对象与面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点:扩展性 ...

  6. 【Python】类与对象:封装/继承/多态

    在python中如何将一些功能借鉴及实现? python模块的迁移调用?感觉还是没有形成系统化的构建? 在学习C++的时候,来了一丝灵感,python的重点不是也是类和对象吗? 本人实践python项 ...

  7. Python全栈开发——面向对象的三大特性(继承 多态 封装)

    1.继承 1.两层意思 改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def ...

  8. Python学习笔记④——类、面向对象的三大特征 [封装+继承+多态]

    ✅ Blogger Learns Python is for learning the "Deep Learning". 文章目录 一.面向对象编程的简介 二.类与对象 -- 基础 ...

  9. python根据一个基类生成派生类_python中的封装继承多态

    1.封装 类的封装可以隐藏类的实现细节,迫使用户只能通过方法去访问数据,这样就可以增强程序的安全性.接下来演示未使用封装可能出现的问题,如例所示. 在例中,运行结果输出的成绩为-68,在程序中不会有任 ...

最新文章

  1. 导购网站 服务器,导购网站云服务器配置
  2. Leetcode 455. 分发饼干 解题思路及C++实现
  3. 微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别
  4. telnet到设备里 php_PHP自动生成设备周检修计划
  5. CC框架实践(1):实现登录成功再进入目标界面功能
  6. 10分钟教你用VS2017将代码上传到GitHub
  7. 小程序引入的echarts过大如何解决_智慧虎超:为服装行业带来3倍收益?小程序如何解决销售难题?...
  8. python中if elif else流程图_Python中的if、else、elif语句用法简明讲解
  9. 威纶通HMI常见问题
  10. c++类之间的基本关系
  11. php 腾讯短信接口api,腾讯云短信发送功能API-PHP接入
  12. navicat使用手册
  13. 华为设备配置VRRP冗余链路 防止单点故障
  14. 短连接生成系统如何设计?
  15. 一场无名的宿醉,失措了一夜的安然。
  16. 疫情期间,程序员是如何靠副业赚钱的?​
  17. hdu2072单词数(思维)
  18. BootStrap框架模块:BootStrap4基础
  19. 基于Android的微信主界面
  20. 故障码(DTC)状态解析

热门文章

  1. 百度地图gif图标_华为手机误删照片怎么找回?手机怎么快速制作GIF动图
  2. zip转直链php,蓝奏网盘直链转换器
  3. Linux内核程序的编译:模块化编译
  4. Problem Collection II 构造
  5. 做一个常规的banner图——负边距的使用、banner图的拼法
  6. websocket + node.js聊天系统
  7. PHP日期、时间戳相关的小程序
  8. 我理解的invoke和begininvoke
  9. java 优酷视频缩略图_java获取优酷等视频缩略图
  10. linux中fstab含义,fstab每一列的含义