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 四大特征
随机推荐
- MYSQL命令练习及跳过数据库密码进行密码重新设置
2.看当前所有数据库:show databases; 3.进入mysql数据库:use mysql; 4.查看mysql数据库中所有的表:show tables; 5.查看user表中的数据: ...
- mysql学习笔记(三):unsigned理解以及特殊情况
UNSIGNED UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的unsigned含义相同.例如,INT的类型范围是-2 147 483 648 - 2 147 483 647 ...
- Vue-表单提交
template <form @submit.prevent="submitFrom"> <!-- 注册提交事件 .prevent 阻止表单的默认提交行为 --& ...
- JS-try/catch方法判断字符串是否为json格式
定义: try/catch 语句用于处理代码中可能出现的错误信息,出现异常会导致程序崩溃,而try/catch 则可以保证程序的正常运行. try { //执行代码 不报错则 正常执行 不会进入下面的 ...
- springboot pom问题及注解
springboot pom不需要指定版本号 springboot会自己管理版本号 <!-- 支持热部署 --> <dependency> <groupId>org ...
- 后端——框架——持久层框架——Mybatis——《Mybatis从入门到精通》读书笔记——初篇
1.Mybatis知识点 框架的知识点大致可以分为三个部分 基础: 介绍编写增,删,改,查: 动态标签: config配置文件 Mapper配置文件 插件:常见的插件有三个 pageHelper:分页 ...
- sparksql报错
执行时报错: org.apache.spark.sql.AnalysisException: Unable to generate an encoder for inner class `cn.itc ...
- Hive的学习之路(理论篇)
一.Hive介绍 Apache官网给出的logo,一半是Hadoop大象的头,一半是蜜蜂的身体,也是寓意着它是基于Hadoop,哈哈,纯属个人理解,进入正题. Hive是基于Hadoop的一个数据仓库 ...
- java中关于&0xFF 的问题
最近遇到一个问题,半天也没想明白,byte temp = 0xA0,为什么System.out.println(temp),打印的值为:-96:而System.out.println(temp& ...
- php 基础知识 常见面试题
1.echo.print_r.print.var_dump之间的区别 * echo.print是php语句,var_dump和print_r是函数 * echo 输出一个或多个字符串,中间以逗号隔开, ...