面向对象(二) 继承/里氏替换
父类:基类
子类:派生类
继承的概念:
1.传递性:子类能继承父类的所有方法、属性
2.单根性:类只能继承一个父类
继承的注意的问题:
1.创建子类对象的时候,会为子类与父类的对象的字段提供空间
2.父类不能继承子类
3.构造方法不能被继承,但是可以在子类用添加 base(指定引用)
4.子类能继承父类的属性与方法、但是私有的方法只能被继承,不能被使用
5.基本格式:
子类:父类 base("构造方法")
6.基本的访问修饰符
public 公开的类 任何都能访问
prive 私有的类 只能在类中进行访问
protected 受保护的类 只能在本类或者子类进行访问
二:里氏替换
概念:父类引用可以指向一个子类,看到的也只是父类的引用
2.里氏替换的原则:
父类不能替换成子类
子类能替换成父类
Parent p=new Son()
Son s=(Son)p; --正确
Parent p=new Parent()
Son s=(Son)p; --错误
注:因为继承的概念就是子孙类会越来越比祖先类详细,所以可以将子孙类强制转换成祖先类,因为祖先有的行为子孙类示例都有了(重新定义的或者是默认的);但是当将祖先类示例强制转换成子孙类示例的时候,一些子孙类有的行为祖先是没有的(即使的是默认的实现也没有)。
7.过程:创建子类的时候先条用子类的构造函数,然后再调用父类的构造函数
执行父类的构造函数后,再执行子类的构造函数。
1.父类引用能引用到子类的父类引用,可以看到,但是无法使用。
例:
a(父类引用)se(子类对象)=new se();
2.1 子类可以访问包括父类的引用以及自己的属性
se(子类) ss=new se();
3.如果需要父类访问到子类的字段,必须要转换
4.转换的方式有两种:
1.(子类类型) 父类引用 //会报错
2.父类引用 as 子类类型 //不会报错、但是会返回一个null值
5.判断父类的对象引用类型,父类引用 is 子类类型 并且返回一个布尔值
例:if(数组[i] is pe)
{
((pe)数组(I).方法/属性)
}
转载于:https://www.cnblogs.com/liyiyong/p/5050151.html
面向对象(二) 继承/里氏替换相关推荐
- 设计模式(二)--里氏替换原则(Java的继承规范)
昨天有说到单一职责原则是针对接口的思维拓展,有没看过的,可以看看!https://blog.csdn.net/newlifemain/article/details/100184642 今天我们来看看 ...
- 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
文章目录 一.里氏替换原则定义 二.里氏替换原则定义扩展 三.里氏替换原则引申意义 四.里氏替换原则意义 五.里氏替换原则优点 一.里氏替换原则定义 里氏替换原则定义 : 如果 对每一个 类型为 T1 ...
- java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...
为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...
- 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)
北风设计模式课程---里氏替换原则(Liskov Substitution Principle) 一.总结 一句话总结: 当衍生类能够完全替代它们的基类时:(Liskov Substitution P ...
- java设计模式3,里氏替换原则
目录 一.里氏替换原则定义 二.里氏替换原则的作用 三.违背原则场景 四.里氏替换原则改变代码 1.抽象人物类 2.哪吒子类 3.敖丙子类 五.关注公众号哪吒编程,回复1024,获取Java学习资料, ...
- Java设计原则——里氏替换原则
我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习. 学习从来无捷径,循序渐进登高峰. 目录 一.基本介绍 二.应用实例 1.示例一 2.示例二 部分笔记来源于尚硅谷设计模式视频教学 ...
- 设计模式之里氏替换原则示例
设计模式之里氏替换原则示例 里氏替换原则强调的是设计和实现要依赖于抽象而非具体:子类只能去扩展基类,而不是隐藏或者覆盖基类,它包含4层含义. 一.里氏替换4原则 1.子类可以实现父类的抽象方法,但不能 ...
- 【设计模式】里氏替换原则
里氏替换原则 OO(Object Oriented,面向对象程式设计)中的继承性的思考和说明 继承包含这样一层含义∶父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有 的子类必 ...
- 设计模式:里氏替换原则(详解)
里氏替换原则 前言 一. 介绍 二.代码演示 1.版本一:原始版本 2.版本二:里氏替换原则 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许 ...
最新文章
- android 判断网络是否可用
- Scrapy匹配xpath时tbody标签的问题
- 大数据翻页_【干货】大数据翻页的难点和技巧
- 在vue中使用SockJS实现webSocket通信
- Ubuntu Linux创建Hadoop用户
- Linux内核中的proc文件系统
- c语言编程单片机网线,【C语言】直播一下单片机编程
- oracle使用between and边界问题
- HTML PS 环境搭建,快捷键及简单图片处理(图片测量及抠取)
- 太乙超级计算机,从“启明”到“太乙”,南科大的超算发展之路
- android倒计时代码
- Hugepages详解
- 网络协议栈分析——从设备驱动到链路层
- 量子力学第十一弹——变分法
- STM32Cube学习(5)——PWM
- 小程序setData数据量大时,导致卡顿怎么解决
- Python Tox介绍和使用
- 白话数字签名(3)—Web程序中的数字签名
- 我以为是个正经程序猿,结果是个中二段子精
- 蓝桥杯单片机省赛——第五届(模拟智能灌溉系统)
热门文章
- eclipse没有Web分支Dynamic Web Project
- 第四十九篇、跳转设置界面
- spring this.logger.isDebugEnabled()
- Windows Phone开发手记-WinRT下启动器替代方案
- Uninstalling ASP.NET MVC 1.1 after installing Visual Studio 2010 beta 2
- 如果不是心中还有梦,又能忍住多少痛?
- 数据通过蓝牙传输中...70.46k/s
- discuz mysql data_discuz调取数据库数据
- 恢复出厂设置后itms注册失败_手机恢复出厂设置后,与新手机的区别已被确认,望大家相互转告!...
- 解决Ubuntu 16.04 SSH无法远程登录问题(使用root登录)