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
最新文章
- 自己写的一个Yeoman的Generator-Require-Angularjs
- 在CentOS 6 32/64 上安装 PPTP 方式 VPN 服务
- sqlserver 查询库中有多少张表
- Android(java)学习笔记249:ContentProvider使用之获得系统联系人信息01
- 强大的微软Microsoft Translator翻译接口
- linux cache swap 以及 虚拟内存等
- java 远程调用 RPC
- Open source operational tools
- 14.app后端如何设计api
- fedora 29 桌面版 设置 cockpit 自动开机启动
- 利用Python制作简单的小程序:IP查看器
- HDU 1039(字符串判断 **)
- [P1441]砝码称重 (搜索+DP)
- ACM学习<;一>;
- DX9 DirectX鼠标控制程序 代码
- Gradle 下载不了
- arcgis runtime 100 Create geometries
- windows server2012部署apache项目访问后台管理系统时tomcat就停了是怎么回事
- noip模拟题《迷》enc
- docker 修改 mysql 5.7 sql_mode
热门文章
- 转置卷积Transposed Convolution
- FPGA与ASIC:它们之间的区别以及使用哪一种?
- Jmeter(五十一) - 从入门到精通高级篇 - jmeter之运动战(详解教程)
- Spring Cloud系列(四):断路器Hystrix
- 题解-P3810
- MySQL进阶:主主复制+Keepalived高可用
- csp-s模拟测试58「Divisors」&#183;「Market」&#183;「Dash Speed」
- 音视频点播服务基础系列(Fmpeg常用命令)
- Java并发编程中的锁
- 第15章: Prometheus监控Kubernetes资源与应用