抽象 abstract

最近对抽象有些不熟悉,那么先谈谈抽象。 抽象在java中常常表现为抽象类和抽象方法,即被abstract关键字修饰的类和方法。

抽象类:被abstract修饰的类

1 和接口不同,抽象类中可以有非抽象的方法,也可以有抽象的方法,而接口中只允许有抽象方法

2 如果一个抽象类被一个非抽象的子类继承,那么父类的抽象方法就必须被子类重写(附:重写发生在父类与子类,形参列表相同。重载发生在同一个类里面,形参列表不同)。

3 抽象类不能创建本身的实例,但是可以利用多态,使父类(抽象类)的引用指向子类的对象,创建子类的实例。

4 基于上一条件可以得知,抽象类不能用final修饰,抽象方法也是。

抽象方法:没什么好说的,没有方法体的方法,可以被非抽象子类重写。

封装:

一般用private修饰符修饰,将类的成员属性私有化,隐藏内部实现细节,仅对外提供公共的getset方法。封装的优点在于隐藏了代码实现细节,提高了安全性。

继承:

一般用extends修饰符表示类与类之间的继承关系。

java只支持单继承,即一个子类只能拥有一个父类。但是可以多实现。

子类可以继承父类的属性和方法,但是不能继承父类的私有化的属性以及构造方法。子类在实例化的时候会先调用父类的构造。

如果一个类没有父类,那么默认继承基类Object。

继承的优点和缺点:

提高了代码的复用性和重用性,是多态产生的前提。但是也增加了类与类之间的耦合性,违背软件开发高内聚、低耦合的原则。

多态:

多态的实现有三个条件:

有继承关系

有方法重写

有父类引用指向子类对象

多态的优点:

提高了程序的扩展性(基于此,多使用面向抽象编程)

降低了代码之间的耦合

OOP的四大特征的更多相关文章

  1. 面向对象编程(OOP)的五大特征-java学习之旅(1)

    这是Alan Kay关于第一个成功的面向对象语言SmallTalk的总结: 1.所有的东西都是对象.可将对象想象成一种新型的变量:它保存着数据,但是可要求它对自身进行操作,理论上讲,可从要解决的问题身 ...

  2. OOP面向对象 三大特征 继承封装多态

    OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...

  3. AngularJS简介与四大特征

    1.1 AngularJS简介 AngularJS  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.A ...

  4. Java学习日记基础(五)——类、对象之this、静态变量(类变量)、静态方法(类方法)、四大特征

    this 赵本山问奥尼尔:“我的爸爸的爸爸是谁?” 奥尼尔:“不知道” 赵本山:“你傻啊,是我爷爷” 奥尼尔回去问科比:“我的爸爸的爸爸是谁?” 科比:“不知道” 奥尼尔:”你傻啊,是赵本山的爷爷“ ...

  5. AngularJS四大特征

    AngularJS四大特征 1.MVC模式 Angular遵循软件工程的MVC模式,并鼓励展现,数据,和逻辑组件之间的松耦合.通过依赖注入(dependency injection),Angular为 ...

  6. Java基础学习(三) -- OOP的三大特征、向上和向下转型、内部类之详解

    面向对象编程(OOP)的三大特征 什么是封装? (1) 把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的类中; (2) "信息隐藏", 把不需要让外界知道的信息隐藏起来 ...

  7. angularjs的四大特征

    angularjs四大特性: 1.MVC模式: Model:数据,其实就是angular变量($scope.XX,$rootScope.XX); View:数据的呈现,Html+Directive(指 ...

  8. 事务四大特征:原子性,一致性,隔离性和持久性(ACID)

    一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. [sql] ...

  9. http 四大特征

随机推荐

  1. //C语言:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回。

    //函数fun:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回. #include <stdio.h> #pragma warning (disable:4996) ...

  2. pillow 初级用法

    # 转载至:https://www.cnblogs.com/apexchu/p/4231041.html Image类 Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种 ...

  3. Ubuntu系统中创建虚拟环境

    1.虚拟环境产生的原因:如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了. ...

  4. Shiro入门基础

    Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. Authentication:身份认证/登录,验证用户是不是拥有相应的身份: Authorization:授权,即 ...

  5. python数组冒号取值操作

    1.冒号的用法 1.1 一个冒号 a[i:j] 这里的i指起始位置,默认为0:j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下 ...

  6. express session 实现登录

    https://www.cnblogs.com/mingjiatang/p/7495321.html Express + Session 实现登录验证   1. 写在前面 当我们登录了一个网站,在没有 ...

  7. Educational Codeforces Round 82 B. National Project

    Your company was appointed to lay new asphalt on the highway of length nn. You know that every day y ...

  8. 【PAT甲级】1068 Find More Coins (30 分)(背包/DP)

    题意: 输入两个正整数N和M(N<=10000,M<=10000),接着输入N个正整数.输出最小的序列满足序列和为M. AAAAAccepted code: #define HAVE_ST ...

  9. Android Studio如何更新support repository

    转自: http://blog.csdn.net/sinat_29696083/article/details/70256377 刚进新公司,熟悉新业务中.老大叫我看看关于ConstraintLayo ...

  10. iPhone代工商,谁敢要求苹果赔偿损失?

    据外国媒体报道,苹果的首席设计师已准备离职,有相关评论称:库克已经不在把硬件设计放到第一位,整个团队都巧妙地遭遇降级.相信熟悉苹果组织的人都知道,他们一切的核心都是围绕"硬件设计" ...