抽象类

抽象方法和抽象类 & 接口

为君一笑 提交于 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

Java设计模式-桥接模式

筅森魡賤 提交于 2020-02-22 04:59:32
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。 介绍 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。 主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。 如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。 关键代码:抽象类依赖实现类。 应用实例: 1、猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化。生灵通过功能的委派,调用肉体对象的功能,使得生灵可以动态地选择。 2、墙上的开关,可以看到的开关是抽象的,不用管里面具体怎么实现的。 优点: 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明。 缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

Java---抽象类&接口

删除回忆录丶 提交于 2020-02-21 18:56:45
抽象类 1.什么是抽象类? 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅作为其派生类的一个基类 --抽象类作为父类,主要是定义功能而已,具体的实现交给派生类 2.语法: abstract class 类名{} 3.规则 ①.抽象类可以包含抽象方法也可以包括非抽象方法 ②.抽象类不能被实例化 ③.抽象类只能被继承 ④.普通类中不能定义抽象方法 ⑤.有抽象方法的类一定是抽象类 4.抽象方法 ①语法 :abstract 方法名(); ②.抽象方法没有方法体; ③.子类必须全部实现父类当中的抽象方法 接口 1.什么是接口? ①.接口是对一组方法的声明 ②.接口的出现是为了解决Java不支持多继承的问题 ③.接口可以将不同的类或者不同层次的类具有的相同行为集合在一起 2.实现类 ①.实现接口的类Keyboard implements USB ②.实现类要实现接口中定义的所有抽象方法 ③.如果一个类继承了一个父类同时也要实现一个接口,那么继承父类一定是在前面 subclass extends class implements interface ④.如果实现多个接口,中间使用逗号隔开 class implements interface1,interface2 3.接口的规则 ①.接口中的方法都是抽象方法,方法前面都默认省略了public abstract ②

Java中abstract和interface的区别

六月ゝ 毕业季﹏ 提交于 2020-02-21 18:21:16
本文转自: http://www.cnblogs.com/gxinliug/archive/2011/04/27/2031246.html   abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。 一、理解抽象类   abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法,请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的

抽象类与抽象方法

旧时模样 提交于 2020-02-21 11:16:37
l 抽象类和抽象方法 抽象类和抽象方法:使用abstract关键字修饰的类和方法就成了抽象类和抽象方法,格式与普通类和方法类似。 抽象类的特性: ·有抽象类就要有继承的子类去实现抽象类中的抽象方法。 ·抽象类中可以定义普通类中定义的所有成员,并且只有在抽象类中才能定义抽象方法。 ·抽象类中不能new对象,抽象类中的对象是给子类调用的。 ·在抽象类中定义的方法,在其普通子类中必须实现所有抽象父类中定义的所有抽象方法,否则这个子类也要申明成抽象类。 抽象方法的特性: ·抽象方法只有方法声明没有方法实现 ·抽象方法是准备在子类中实现的,它只是一个模板。 没有抽象属性和抽象变量一说。 注意: abstract与final不能同时修饰一个方法或类。因为final修饰的方法不能被重写而abstract修饰的方法需要在子类实现(重写);final修饰的类不能有继承,而abstract修饰的类是抽象类必须要有子类,因此这两个修饰符冲突,不能一起使用。 abstract与static不能同时修饰一个方法。static修饰方法属于类方法,可以被“类.方法”类直接调用,而abstract修饰的方法是抽象方法,没有方法体,是需要在子类中重写的方法。因此static不能与abstract同时修饰一个方法。 abstract与private不能同时修饰一个方法。private修饰的方法只能在当前类被调用

php中抽象类和接口的特点、区别和选择

限于喜欢 提交于 2020-02-21 08:29:59
一.特点: 1、抽象类特点 (1) 用 abstract 来修饰一个类,那么这个类就是抽象类;抽象类绝对不能被实例化,即$abc = new 抽象类名();会报错。 (2) 用abstract 来修饰一个方法,那么该方法就是抽象方法; (3) 如果类中有一个抽象方法,那么该类就必须定义为抽象类; 但反过来,抽象类里并不一定要有抽象方法。另外,抽象类里也可以有普通方法。 (4) 抽象方法不能有方法体。即abstract function abc();------后面不能加大括号{.........}。 (5)、一个类继承了某个抽象类,那么,它必须实现抽象类中所有的抽象方法(除非,它也这些抽象方法声明为抽象的,相当于抽象类继承了抽象类)。 2、接口的特点 (1) 接口的方法必须是公开的。 (2) 接口的方法默认是抽象的,所以不在方法名前面加abstract。 (3) 接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。 (4) 类可以实现多个接口(用逗号隔开) (5) 接口也可以继承接口。 二. 区别: 1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。 2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。 3

Java学习之Collection集合

醉酒当歌 提交于 2020-02-20 21:41:06
一、集合概述 1、集合是java中提供的一种容器,可以用来存储多个数据 2、集合和数组的区别 数组的长度是固定的,集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本类型值,也可以存储对象。集合存储的都是对象。而且对象的类型可以不一样。在开发中一般当对象多的时候,使用集合进行存储。 二、集合框架 1、JavaSE提供了满足各种需求的API,在使用API前,先要了解继承与接口操作的架构。 2、学会集合的目标:会使用集合存储数据,会遍历集合,把数据取出来,掌握每种集合的特性 3、List接口:1、有序的集合(存储和取出元素顺序相同)2、允许存储重复的元素3、有索引,可以使用普遍的for遍历循环 (Vector集合,ArrayList集合,LinkedList集合) 4、Set接口:1、不允许存储重复元素2、没有索引,不能使用普通的for循环遍历 (TreeSet集合,HashSet集合,这两个是无序集合,存和取元素的顺序有可能不一致。(LinkedHashSet集合)) 5、Collection接口:定义的是所有单列集合中共性的方法,所有的单列集合都可以使用共性的方法。没有带索引的方法。6、集合框架的学习方法:学习顶层(学习顶层接口/抽象类中的共性方法,所有的子类都可使用),使用底层:底层不是接口就是抽象类,无法创建兑现使用,需要使用底层的子类创建对象使用。 6

Java知识串讲

蓝咒 提交于 2020-02-20 13:08:07
一、JDK个版本之间的区别: 1.JDK1.5的新特性: 泛型ArrayList list = new ArrayList();-->ArrayList<int> list = new ArrayList<int>(); 自动装箱/拆箱 for - each static import(静态导入) 以前是:Math.squrt() --》squrt(); 边长参数: int sum(int ... int list)有任意个参数,把它看做数组,通过...来表示 枚举 元数据(Meradata) 2.JDK1.6的新特性: 增强的for循环 监视器和管理:JavaSE6中内存泄漏增强了分析以及诊断能力。。当遇到java.lang.OutOfMemory异常的时候,可以得到一个完整的堆栈信息,并且当堆已经满了的时候,会产生一个Log文件记录这个致命错误,另外JVM还添加了一个选择,允许你在堆满的时候运行脚本。 插入式注解处理:插入式直接处理API(JSR 269)提供了一套标准API来处理Annotations(释文) 安全性 Desktop类和SystemTray类 使用JAXB2来实现对象域XML之间的映射 StAX 使用Compiler API 轻量级HTTPServer API 用console来发控制台程序 3.JDK1.7的新特性: 模块化特性

复盘2.18

非 Y 不嫁゛ 提交于 2020-02-20 13:04:33
1: 详解:API里面写的:当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。 抛InterruptedException的代表方法有: java.lang.Object 类的 wait 方法 java.lang.Thread 类的 sleep 方法 java.lang.Thread 类的 join 方法 2: 详解: A选项正确,Java中一般通过interrupt方法中断线程 B选项正确,线程使用了wait方法,会强行打断当前操作,进入阻塞(暂停)状态,然后需要notify方法或notifyAll方法才能进入就绪状态 C选项错误,新创建的线程不会抢占时间片,只有等当前线程把时间片用完,其他线程才有资格拿到时间片去执行。 D选项错误,调度算法未必是剥夺式的,而准备就绪但是还没有获得CPU,它的权限更高只能说明它获得CPU被执行的几率更大而已 3: 题解:没有final修饰的变量相加后会被自动提升为int型,与目标类型byte不相容,需要强制转换(向下转型)。 4: 题解:A、java中类的加载有5个过程,加载、验证、准备、解析、初始化;这便是类加载的5个过程,而类加载器的任务是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例,在虚拟机提供了3种类加载器,引导

Java面向对象大致梳理

别说谁变了你拦得住时间么 提交于 2020-02-20 13:01:03
面向对象思想、 面向对象思想概述: Java设计语言面向对象: Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 类和对象: 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物 属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。 类与对象的关系 : 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。 面向对象之封装: 概述: 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。