Day11继承、封装、多态-面向对象编程(2)
封装
我们设计程序要追求 高内聚,低耦合 。
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅暴露少量方法给外部使用
封装(数据的隐藏)
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
属性私有, get/set

1.提高程序的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.系统可维护增加了
继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
extends的意思是"扩展"。子类是父类的扩展。
Java中类只有单继承,没有多继承

object类: 所有类都直接或间接继承Object类
super : this
方法重写: 重点--->多态

super注意点:
1.super调用父类的构造方法,必须在构造方法的第一个
2.super 必须只能出现在子类的方法或构造方法中!
3.super和this不能同时调用构造方法!
VS this:
代表的对象不同:
this: 本身调用者这个对象
super:代表父类对象的应用
前提:
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法
this();本类的构造
super();父类的构造!
重写(重点)--->多态

b是A new出来的对象,因此调用A的方法
因为静态方法是类的方法,非静态是对象的方法
有static时,b调用了B类的方法,因为b是B类定义的
没有static时,b调用的是对象的方法,而b是用A类new的 (静态属于类 非静态属于对象 优先级类大于对象)
重写:需要有继承关系,子类重写父类的方法!
方法名必须相同
参数列表必须相同
修饰符:范围 可以扩大但不能缩小: public > Protected > Default > private 注意被final常量修饰后不能继承(断子绝孙)
抛出的异常: 范围 可以被缩小,但不能扩大; ClassNotFoundException --> Exception (大)
重写,子类的方法和父类必须一致:方法体不同!
为什么需要重写? 父类的功能,子类不一定需要,或者不一定满足! 快捷键: Alt+Insert ; override; 或者 Ctrl+O
多态(动态编译: 可扩展性变得更强)
即同一种方法跟已根据发送对象的不同而采取用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用类型有很多。(父类,有关系的类)

多态的注意事项: 1.多态是方法的多态,属性没有多态。 2.父类和子类,有联系 类型转换异常: ClassCastException! 3.多态存在条件: 1.继承关系 2.方法需要重写(子类重写父类方法) 3.父类引用指向子类对象!! father f1 = new Son();
哪些方法不能重写: 1.static 方法 属于类 不属于实例 2.final 常量; 3.private私有;
instanceof (类型转换)引用类型,判断一个对象是什么类型~

类型转化存在条件: 1.父类引用指向子类的对象 2.把子类转化为父类,向上转型;自动转换 3.把父类转化为子类,向下转化;强制转化(丢失了子类独有的方法) 4.方便方法的调用,减少重复代码,提高利用率!简洁
抽象:封装、继承、多态!! 抽象类 接口
编程思想 持续学习
Static关键字详解
{ //代码块(匿名代码块) }
static{ //静态代码块 }

导入静态包PI

Day11继承、封装、多态-面向对象编程(2)的更多相关文章
- OOP面向对象 三大特征 继承封装多态
OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...
- JavaScript 继承 封装 多态实现及原理详解
面向对象的三大特性 封装 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. ...
- JavaScript基础--面向对象三大特性(八):继承封装多态
一.构造函数基本用法:function 类名(参数列表){ 属性=参数值} function Person(name,age){ this.name = name; this.age = age; } ...
- java - day007 - 继承(2), 多态,面向对象,抽象类
继承 新建子类对象是,先新建父类对象,并执行父类的构造方法, 默认执行父类的无参构造放方法 可以 手动调用父类的有参构造 super(参数 ) super super.xxx() 调用父类成员 一般重 ...
- 面向对象的三大特征——封装、继承、多态(&常用关键字)
一.封装 Encapsulation 在面向对象程式设计方法中,封装是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装的概念(针对服务器开发,保护内部,确保服务器不出现问题) 将类的 ...
- python 面向对象及封装继承和多态
######装饰器######装饰器的概念 - 装饰器的实现是函数里面嵌套函数;- 装饰器的本质是一个函数, 它可以让其他函数在不需要做任何代码改动的前提下增加额外的功能;- 装饰器需要传递一个函数, ...
- java面向对象(封装,继承,多态,抽象,接口的定义和实现)
1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...
- Java基础知识回顾之三 ----- 封装、继承和多态
前言 在上一篇中回顾了java的修饰符和String类,这篇就来回顾下Java的三大特性:封装.继承.多态. 封装 什么是封装 在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部份包装 ...
- [Objective-C] 004_继承封装与多态
继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展.通过继承创建的 ...
随机推荐
- Wide & Deep的OneFlow网络训练
Wide & Deep的OneFlow网络训练 HugeCTR是英伟达提供的一种高效的GPU框架,专为点击率(CTR)估计训练而设计. OneFlow对标HugeCTR搭建了Wide & ...
- GitHub上开源的YOLOv5
GitHub上开源的YOLOv5 代码地址:https://github.com/ultralytics/YOLOv5 该存储库代表Ultralytics对未来的对象检测方法的开源研究,并结合了我们在 ...
- onnx算子大全
本文通过此脚本从def文件自动生成.不要直接修改,而是编辑算子定义. 对于算子输入/输出的可辩别的,它可以是可辩别的.不可辩别的或未定义的.如果未指定变量的可辩别的,则该变量具有未定义的可辩别的. a ...
- CountDownLatch原理详解
介绍 当你看到这篇文章的时候需要先了解AQS的原理,因为本文不涉及到AQS内部原理的讲解. CountDownLatch是一种同步辅助,让我们多个线程执行任务时,需要等待线程执行完成后,才能执行下面的 ...
- 谁才是智能家居的未来?视声M+O融合方案给出答案
有些智能家居,你不能说它不智能. 但在现实生活中,常常帅不过一秒. 就比如,当你经历了一天的疲惫后回到家,发现玄关的智能开关突然没反应,家里的灯怎么都打不开.这种时候你得明白,你的智能开关面板很有可能 ...
- 【渗透实战】那些奇葩的WAF_第二期_无意发现通杀漏洞,空字节突破上传!
/文章作者:Kali_MG1937 CSDN博客号:ALDYS4 QQ:3496925334 未经许可,禁止转载/ 该博文为本人18年左右的渗透记录,文法粗糙,技术含量极低,流水账文章,且今日不知为何 ...
- Waymo object detect 2D解决方案论文拓展
FixMatch 半监督中的基础论文,自监督和模型一致性的代表作. Consistency regularization: 无监督学习的方式,数据\(A\)和经过数据增强的\(A\)计做\(A'\) ...
- csp-s模拟测试50(9.22)「施工(单调栈优化DP)」·「蔬菜(二维莫队???)」·「联盟(树上直径)」
改了两天,终于将T1,T3毒瘤题改完了... T1 施工(单调栈优化DP) 考场上只想到了n*hmaxn*hmaxn的DP,用线段树优化一下变成n*hmaxn*log但显然不是正解 正解是很**的单调 ...
- hackthebox TheNotebook
前言 只拿到了user,提权没成功--有wp说是CVE-2019-5736,我没打成. 打点 nmap-sV -v -A 10.10.10.230 端口扫描结果: PORT STATE SERVICE ...
- 【LeetCode每日一题 Day 5】5. 最长回文子串
大家好,我是编程熊,今天是LeetCode每日一题的第五天,一起学习LeetCode第五题<最长回文子串>. 题意 给你一个字符串 s,找到 s 中最长的回文子串. 示例 输入:s = & ...