抽象方法

第1章 类和对象—面向对象概念

[亡魂溺海] 提交于 2020-02-25 22:12:34
面向对象程序设计( Object-Oriented Programming , OOP )是一种程序设计架构,同时也是一种程序开发的方法。对象指的是类的实例,它将对象作为程序的基本单元,将程序和数据封装其中,以提高代码的重用性、灵活性和扩展性。 1.1 面向对象概念 时间是由什么组成的?现实世界是由一个一个对象组成的,例如看到的东西、听到的事件、想到的事情,这些都是对象,也就是说万事万物皆对象。不同的对象,既相互独立,又相互联系,人们面向的世界是“面向对象”的。 1.1.1 对象抽象成类 对象( Object )抽象为类( Class )的过程,是在系统分析阶段完成的。 1. 分析对象的特征 对象是人们要分析的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件,不同的对象呈现不同的特征 。由于对象反映了现实世界,人们通过面向对象的方法就可以找到合理地解决问题的方法。怎么区分这些对象呢?就是分析与系统相关的特征,包括状态(静态特征)和操作(动态特征)。如图 1-1 所示为对象的部分特征的分析。 状态:用于描述对象的静态特征,表示对象“是什么样子”。对象的状态用一些数据来描述,在程序中称为字段或属性。 操作:用于描述对象的动态特征,表示对象“能做什么”。对象的操作用于改变对象的状态,对象的操作就是对象的行为,在程序称为方法或函数 。 对象实现了状态和操作的结合

二、设计模式总览及工厂模式详解

时光怂恿深爱的人放手 提交于 2020-02-25 22:11:32
二、架构师内功心法之设计模式 2.架构师内功心法之设计模式 2.1.课程目标 1、通过对本章内容的学习,了解设计模式的由来。 2、介绍设计模式能帮我们解决哪些问题。 3、剖析工厂模式的历史由来及应用场景。 2.2.内容定位 不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的 是解耦。设计模式天天都在用,但自己却无感知。我们把设计模式作为一个专题,主要是学习设计模式 是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效 的方式。 2.3.回顾软件设计原则 设计原则 解释 开闭原则 对扩展开放,对修改关闭 依赖倒置原则 通过抽象使各个类或者模块不相互影响,实现松耦合。 单一职责原则 一个类、接口、方法只做一件事。 接口隔离原则 尽量保证接口的纯洁性,客户端不应该依赖不需要的接口。 迪米特法则 又叫最少知道原则,一个类对其所依赖的类知道得越少越好。 里氏替换原则 子类可以扩展父类的功能但不能改变父类原有的功能。 合成复用原则 尽量使用对象组合、聚合,而不使用继承关系达到代码复用的目的。 2.4.设计模式总览 写出优雅的代码 更好地重构项目 经典框架都在用设计模式解决问题 Spring就是一个把设计模式用得淋漓尽致的经典框架,其实从类的命名就能看出来,我来一一列举: 设计模式名称 举例 工厂模式

抽象类

回眸只為那壹抹淺笑 提交于 2020-02-24 05:56:35
1.当用abstract来修饰一个类时,这个类就是抽象类。当abstract来修饰一个方法时,这个方法就是抽象方法。 2.含有抽象方法的类必须被定义为抽象类, 抽象类必须被继承,抽象方法必须被重写 3.抽象类不能被实例化,只能被子类继承。 4.抽象方法只需声明,无需实现,抽象方法没有方法体 例,在同一个包下定义一个Shape.java文件 public abstract class Shape { { System.out.println("执行Shape的初始化块"); } //定义一个计算周长的抽象方法 public abstract double calPerimeter(); //定义一个返回形状的抽象方法 public abstract String getTyp(); } 再定义一个Triangle.java文件 public class Triangle extends Shape{ //定义三边 private double a; private double b; private double c; public Triangle(double a,double b , double c) { this.setSides(a,b,c); } public void setSides(double a, double b , double c){ if (a >=

Java学习--抽象类和接口

醉酒当歌 提交于 2020-02-24 05:52:07
https://www.cnblogs.com/dolphin0520/p/3811437.html 抽象类 先了解一下【抽象方法】—一种特殊的方法,只有声明,没有具体的实现 abstract void fun(); 抽象方法必须用abstract关键字进行修饰 抽象类—包含抽象方法的类,在类前用abstract关键字修饰 抽象类不能用来创建对象(因为他含有无具体实现的方法) abstract class ClassName { abstract void fun(); } 对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法 注意,抽象类和普通类的主要有三点区别:  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。  2)抽象类不能用来创建对象;  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。  在其他方面,抽象类和普通的类并没有区别。

面向对象之接口与抽象性

三世轮回 提交于 2020-02-23 13:58:12
一、接口(interface)   1、 定义 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要...则必须能...”的思想。继承是一个"是不是"的关系,而接口实现则是 "能不能"的关系 接口的本质是契约,标准,规范,就像我们的法律一样。制定好后大家都要遵守 一个类可以实现多个接口,可以得到多重继承的效果   2、接口的使用说明(JDK7及以前) ① Java中,接口(interface) 是与类(class)并列的结构 ② 如何定义一个接口:使用interface关键字 ③ 接口中只能定义全局常量和抽象方法 全局常量:public static final的,但是书写时,可以省略不写         抽象方法:public abstract修饰         ④ 接口中不能定义构造器,意味着接口不可以实例化。         ⑤ Java开发中,接口通过让类去实现(implements)的方式来使用 类实现接口以后,就获取了接口中声明的结构:常量、抽象方法 如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化         如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类          ⑥ Java类可以实现多个接口 弥补了Java单继承性的局限性 格式:class AA extends BB implements CC,DD,EE

Java基础-接口与多态

ε祈祈猫儿з 提交于 2020-02-23 09:23:41
一、接口 1.1 接口的概念 接口是功能的集合,同样可看做是一种数据类型。 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。 请记住:一切事物均有功能,即一切事物均有接口。 1.2 接口的定义 与定义类的class不同接口定义时需要使用interface关键字。定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。 定义格式: public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; } 注意: (1)接口中的方法均为公共访问的抽象方法 (2)接口中无法定义普通的成员变量,必须定义为常量。 public static final 数据类型 变量名 = 值; 1.3 类实现接口 类与接口的关系为实现关系,类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。 其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能。 格式如下: class 类 implements 接口 { 重写接口中方法 } 在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法

类和对象

本秂侑毒 提交于 2020-02-22 09:23:12
类和对象 一、面向过程和面向对象 (1)面向过程 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。 优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。 缺点:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。 (2)面向对象 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自己当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。 优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。 缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题 , 即便是上帝也无法预测最终结果。于是我们经常看到修改游戏的某一参数的极有可能导致bug的出现,使这个游戏失去平衡。 应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方。 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率

java 抽象类和抽象方法

大兔子大兔子 提交于 2020-02-22 05:02:21
抽象类特点: a.抽象类和抽象方法必须用abstract关键字修饰 abstract class 类名{} public abstract void call{}; b.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口 c.抽象类不能实例化 按照多态的方式,由具体的子类实例化,简称抽象类多态 d.抽象类的子类 要么是抽象类 ,要么重写抽象类中的所有抽象方法。 抽象类的成员特点: a:成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?不能够修饰 b:构造方法 有! 用于子类访问父类数据的初始化 c:成员方法;既可以是抽象的,也可以是非抽象的 抽象类的成员方法特性: a:抽象方法 强制要求子类做的事情。 b: 非抽象方法 子类继承,提高代码复用性。 来源: https://www.cnblogs.com/yimian/p/6440865.html

抽象方法和抽象类 & 接口

为君一笑 提交于 2020-02-22 05:00:21
抽象方法 使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。 抽象类 包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。 抽象类的使用要点 有抽象方法的类只能定义成抽象类 抽象类不能实例化,即不能用new来实例化抽象类。 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。 抽象类只能用来被继承。 抽象方法必须被子类实现。 将方法的设计与实现分离 接口 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。只有常量和抽象方法。 接口定义 访问修饰符:只能是public或默认。 接口名:和类名采用相同命名机制。 extends:接口可以多继承。 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。 方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract 来源: https://www.cnblogs.com/pallcard-LK/p/8975021.html

细说MVC中仓储模式的应用

一个人想着一个人 提交于 2020-02-21 22:38:02
文章提纲 概述要点 理论基础 详细步骤 总结 概述要点 设计模式的产生,就是在对开发过程进行不断的抽象。 我们先看一下之前访问数据的典型过程。 在Controller中定义一个Context, 例如: private AccountContext db = new AccountContext(); 在Action中访问,例如获取用户列表: var users=db.SysUsers; 类似于这种,耦合性太高。业务逻辑直接访问数据存储层会导致一些问题,如 重复代码;不容易集中使用数据相关策略,例如缓存;后续维护,修改增加新功能不方便 等等。 我们使用repository来将业务层和数据实体层分开来,业务逻辑层应该对组成数据源层的数据类型不可知,比如数据源可能是数据库或者Web service 在数据源层和业务层之间增加一个repository层进行协调,有如下作用: 1.从数据源中查询数据 2.映射数据到业务实体 3.将业务实体数据的修改保存到数据源 (持久化数据) 这样repository就将业务逻辑和基础数据源的交互进行了分隔。 数据和业务层的分离有如下三个优点: 1.集中管理不同的底层数据源逻辑。 2.给单元测试提供分离点。 3.提供弹性架构,整体设计可以适应程序的不断进化。 我们将会对原有做法进行两轮抽象,实现我们想要的效果。 理论基础