OOP的四大特征
抽象 abstract
最近对抽象有些不熟悉,那么先谈谈抽象。 抽象在java中常常表现为抽象类和抽象方法,即被abstract关键字修饰的类和方法。
抽象类:被abstract修饰的类
1 和接口不同,抽象类中可以有非抽象的方法,也可以有抽象的方法,而接口中只允许有抽象方法
2 如果一个抽象类被一个非抽象的子类继承,那么父类的抽象方法就必须被子类重写(附:重写发生在父类与子类,形参列表相同。重载发生在同一个类里面,形参列表不同)。
3 抽象类不能创建本身的实例,但是可以利用多态,使父类(抽象类)的引用指向子类的对象,创建子类的实例。
4 基于上一条件可以得知,抽象类不能用final修饰,抽象方法也是。
抽象方法:没什么好说的,没有方法体的方法,可以被非抽象子类重写。
封装:
一般用private修饰符修饰,将类的成员属性私有化,隐藏内部实现细节,仅对外提供公共的getset方法。封装的优点在于隐藏了代码实现细节,提高了安全性。
继承:
一般用extends修饰符表示类与类之间的继承关系。
java只支持单继承,即一个子类只能拥有一个父类。但是可以多实现。
子类可以继承父类的属性和方法,但是不能继承父类的私有化的属性以及构造方法。子类在实例化的时候会先调用父类的构造。
如果一个类没有父类,那么默认继承基类Object。
继承的优点和缺点:
提高了代码的复用性和重用性,是多态产生的前提。但是也增加了类与类之间的耦合性,违背软件开发高内聚、低耦合的原则。
多态:
多态的实现有三个条件:
有继承关系
有方法重写
有父类引用指向子类对象
多态的优点:
提高了程序的扩展性(基于此,多使用面向抽象编程)
降低了代码之间的耦合
OOP的四大特征的更多相关文章
- 面向对象编程(OOP)的五大特征-java学习之旅(1)
这是Alan Kay关于第一个成功的面向对象语言SmallTalk的总结: 1.所有的东西都是对象.可将对象想象成一种新型的变量:它保存着数据,但是可要求它对自身进行操作,理论上讲,可从要解决的问题身 ...
- OOP面向对象 三大特征 继承封装多态
OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...
- AngularJS简介与四大特征
1.1 AngularJS简介 AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.A ...
- Java学习日记基础(五)——类、对象之this、静态变量(类变量)、静态方法(类方法)、四大特征
this 赵本山问奥尼尔:“我的爸爸的爸爸是谁?” 奥尼尔:“不知道” 赵本山:“你傻啊,是我爷爷” 奥尼尔回去问科比:“我的爸爸的爸爸是谁?” 科比:“不知道” 奥尼尔:”你傻啊,是赵本山的爷爷“ ...
- AngularJS四大特征
AngularJS四大特征 1.MVC模式 Angular遵循软件工程的MVC模式,并鼓励展现,数据,和逻辑组件之间的松耦合.通过依赖注入(dependency injection),Angular为 ...
- Java基础学习(三) -- OOP的三大特征、向上和向下转型、内部类之详解
面向对象编程(OOP)的三大特征 什么是封装? (1) 把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的类中; (2) "信息隐藏", 把不需要让外界知道的信息隐藏起来 ...
- angularjs的四大特征
angularjs四大特性: 1.MVC模式: Model:数据,其实就是angular变量($scope.XX,$rootScope.XX); View:数据的呈现,Html+Directive(指 ...
- 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. [sql] ...
- http 四大特征
随机推荐
- APP inventor 学习
中文教程:https://web.17coding.net/ 网页在线开发:http://app.gzjkw.net/#1 ai2.appinventor.mit.edu http://appinve ...
- codeforces Beautiful Numbers
来源:http://codeforces.com/problemset/problem/1265/B B. Beautiful Numbers You are given a permutat ...
- 解决Zookeeper无法启动的问题
在启动zookeeper集群的单个zookeeper节点时总是报如下错误 [root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh status JMX e ...
- go开发工具goclipse的安装
(1) 安装Eclipse 建议下载Eclipse时直接下载"Eclipse IDE for Java Developers"的package,而不要下载较小的Installer. ...
- websocket 无法查看Data
websocket 是浏览器新的信息传输协议,记录一些遇到的问题: 调试相关: websocket 连接以后可以在Chrome tools 中的network下看到,如图 要查看通信内容可以选中点击f ...
- 例题3_3 回文词(UVa401)
输入一个字符串,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有镜像串,就是左右镜像之后和原串相同,如2S和3AIAE.注意,并 ...
- spring web 测试用例
spring web 测试有三种方式 1. 自己初始化 MockMvc 2.依赖@springbootTest 它会帮你生产 webTestClient ,只需自己注入即可. 3.启动的时候,不加载整 ...
- Embedded Packet Capture (EPC)
Embedded Packet Capture (EPC)是一个很好的抓包工具,在排障的时候,需要在线抓包的情况下,是一个非常好的选择. EPC在IOS和IOS-XE都是支持,不过,不同平台下有版本的 ...
- hive内表和外表的创建、载入数据、区别
创建表 创建内表 create table customer( customerId int, firstName string, lastName STRING, birstDay timestam ...
- 【Java 二维码】生成二维码
ZXingCodeEncodeUtils 生成及解析二维码项目 package utils; import java.awt.BasicStroke; import java.awt.Color; i ...