抽象类

[Day11]接口、多态

蓝咒 提交于 2020-02-13 12:16:52
1.接口   (1)接口定义: interface关 键字 ,所在文件仍然是.java文件,编译后仍产生.class文件。    定义格式      public interface 接口名{       抽象方法1;       抽象方法2;       抽象方法3;     }    注意:a.接口中的方法均为 公共方法 访问的抽象方法。b.接口中 无法 定义普通的成员变量。   (2)类实现接口:类与接口的关系,实现使用 implements 。     格式:      class 类 implements 接口{       重写接口中的方法     }     在类实现中,该类将接口中的抽象方法继承过来,此时该类需要 重写 抽象方法,完成具体的逻辑。      类是现实事物的描述,接口是功能的集合 。   (3)接口中成员的特点     a.接口中的变量需要用固定的修饰符修饰 public static final ,接口中的变量称之为常量,不可改变。     b.接口中的方法需要用固定的修饰符修饰 public abstract 。     c.接口 不可以创建对象 。     d.子类必须覆盖掉接口中 所有 的抽象方法后,子类才可以实例化,否则子类是一个抽象类。   (4)接口的多实现:接口最重要的体现是 解决多继承的弊端。     弊端指的是在多继承时

JavaSE学习笔记-Day8

Deadly 提交于 2020-02-13 11:11:09
孔子云:温故而知新,可以为师矣。那么今天就来回顾一下这一个星期所学的知识。 第一章: 初步认识Java Java版本:SE 、 EE 、 ME, SE定位于计算机,EE定位于服务器。 Java优势: 跨平台性 (不区分操作系统),面向对象,多线程,高性能等等。 JVM 、JRE 、JDK:JVM是跨平台性的核心机制,运行Java只要JRE,开发需要JDK。 Java运行机制 :先编译成.class文件,再解释运行。 "Hello World"程序: main方法是Java程序的入口。输出语句的固定写法。 第二章: Java面向对象编程基础 面向过程和 面向对象 思想:万物皆可对象,要宏观把控系统。 类和对象: 类是模板,对象是实例。 1)类一般由三大部分组成(成员):成员变量、成员方法、构造方法。类名要符合驼峰原则。 2)看见new这个关键字就是在创建对象,其含义是调用类的构造方法创建实例。 3) 匿名对象 :一般对象都会给个名字,没名字的就是匿名对象。 Java数据类型: 两类,基本数据类型和引用数据类型。 1)整型默认为int,浮点型默认为double,long型数据在末尾加"l/L",float型数据在末尾加"f/F"。浮点型数据避免直接比较大小! 2)自动数据类型转化:范围小的可自动转换成范围大的,有部分转化过程可能出现精度丢失,所以这也不是绝对安全的。 3)强制类型转化

018_linuxC++之_抽象类的引入

非 Y 不嫁゛ 提交于 2020-02-12 18:44:13
(一)参考原文链接: C++多态 (二) 抽象类 在介绍抽象类之前,我们先介绍一下纯虚函数。 1.纯虚函数 在基类中仅仅给出声明,不对虚函数实现定义,而是在派生类中实现。这个虚函数称为纯虚函数。普通函数如果仅仅给出它的声明而没有实现它的函数体,这是编译不过的。纯虚函数没有函数体。 纯虚函数需要在声明之后加个=0; class <基类名> { virtual <类型><函数名>(<参数表>)=0; ...... }; 2.抽象类 含有纯虚函数的类被称为抽象类。抽象类只能作为派生类的基类,不能定义对象,但可以定义指针。在派生类实现该纯虚函数后,定义抽象类对象的指针,并指向或引用子类对象。 1)在定义纯虚函数时,不能定义虚函数的实现部分; 2)在没有重新定义这种纯虚函数之前,是不能调用这种函数的。 抽象类的唯一用途是为派生类提供基类,纯虚函数的作用是作为派生类中的成员函数的基础,并实现动态多态性。继承于抽象类的派生类如果不能实现基类中所有的纯虚函数,那么这个派生类也就成了抽象类。因为它继承了基类的抽象函数,只要含有纯虚函数的类就是抽象类。纯虚函数已经在抽象类中定义了这个方法的声明,其它类中只能按照这个接口去实现。 3.接口和抽象类的区别 1)C++中我们一般说的接口,表示对外提供的方法,提供给外部调用。是沟通外部跟内部的桥梁。也是以类的形式提供的,但一般该类只具有成员函数,不具有数据成员

接口和抽象类

会有一股神秘感。 提交于 2020-02-12 11:29:15
1.抽象类与接口的抽象层次是不同的 抽象类是对类抽象,接口是对行为抽象。类包含了属性与行为,所以说接口是更具体的抽象 2、抽象类与接口的设计层次是不同的 抽象类是一种自下而上的设计,先有子类才能提取公同的属性与行为,抽象出父类; 接口是一种自上而下的设计,先规定行为方法,只要可以实现这些行为,就可以成为接口的实现类。 3、抽象类与其派生类的关系和接口与其实现类的关系本质是不同的 抽象类与其派生类是一种 is-a 关系,即父类和派生子类在概念上的本质是相同的(父子关系,血缘联系,很亲密)。 接口与其实现类是一种 like-a 关系,即接口与实现类的关系只是实现了定义的行为,并无本质上的联系(契约关系,很淡漠的利益关系)。 举个例子 比如说一个动物抽象类,定义了跑的方法、叫的方法,但如果一个汽车类可以实现跑、可以实现叫,它就可以继承动物抽象类吗?!这太不合理了,汽车不是动物呀!而如果通过接口定义跑的方法、叫的方法,汽车类作为实现类实现跑和叫,完全OK很合理,就因为没有继承关系的约束。 来源: https://www.cnblogs.com/wangyuyanhello/p/12298310.html

设计模式学习心得<桥接模式 Bridge>

こ雲淡風輕ζ 提交于 2020-02-12 00:21:51
说真的在此之前,几乎没有对于桥接模式的应用场景概念。 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。 概述 意图 将抽象部分与实现部分分离,使它们都可以独立的变化。 主要解决 在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 何时使用 实现系统可能有多个角度分类,每一种角度都可能变化。 如何解决 把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。 关键代码 抽象类依赖实现类。 应用实例 墙上的开关,可以看到的开关是抽象的,不用管里面具体怎么实现的。 优点 抽象和实现的分离。 优秀的扩展能力。 实现细节对客户透明。 缺点 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。 使用场景 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

java中易混淆的知识点

六眼飞鱼酱① 提交于 2020-02-11 12:31:31
声明抽象方法会造成以下两个结果: 如果一个类包含抽象方法,那么该类必须是抽象类。 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。 实现Java封装的步骤: 修改属性的可见性来限制对属性的访问(一般限制为private) 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法(get/set),用于对私有属性的访问 静态代码块: static{ } 实例化的时候在最先执行 super(): 调用父类的无参构造方法:super() 调用父类的有参构造方法:super(name,age) 调用父类的公有的方法:String name = super.name 调用父类的方法:super.say() final关键字: 使用final修饰的类不能被继承 使用final修饰的方法不能被子类覆盖 使用final修饰的变量不能被修改,即为常量 抽象类: 包含一个抽象方法的类是抽象类 抽象类和抽象方法都要用abstract关键字修饰 抽象方法只需要声明不需要实现 抽象类必须被子类(不是抽象类)重写类中的抽象方法 抽象类不能被实例化 java中多态性的表现: 方法的重载和重写 可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现(向上转型) 多态的实现方式: 方式一:重写:子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 即外壳不变

黑马程序员--继承

江枫思渺然 提交于 2020-02-11 12:11:22
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! --------------------- 继承是面向对象的核心特征之一。继承是已有类创建新类的机制。利用继承机制,可以先创建一个具有共性的一般类(父类),根据该一般类再创建具有特殊性的新类(子类),新类继承一般类的状态和行为,并根据需要增加它自己的新状态和行为。 在 java 语言中, java 只支持单继承,但是支持多层继承。通过继承,子类拥有父类的所有成员(成员变量和成员方法),子类不仅可以定义新的成员变量和成员方法,还可以对父类中的成员变量和方法进行更改,使累的功能得到扩展你,提高了代码的复用性。 类的继承原则: ( 1 )类与类之间必须存在所属关系。 ( 2 )子类不能继承父类的构造方法。因为父类的构造方法用来创建父类对象,子类需要定义自己的构造方法,用来创建自己的对象。 到底如何才能使用继承体系中的功能呢?先要查阅该体系中父类的描述,因为父类中定义的是该体系中的共性功能,通过了解共性功能,就可以知道该体系的基本功能。在具体调用时,要创建子类的对象

接口和抽象类有什么区别

不想你离开。 提交于 2020-02-11 11:54:04
他们都不能实例化对象,都可以包含抽象方法,而且抽象方法必须被继承的类全部实现。 区别: 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。 2、抽象类要被子类继承,接口要被类实现。 3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现 4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。 5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。 6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果 7、抽象类里可以没有抽象方法 8、如果一个类里有抽象方法,那么这个类只能是抽象类 9、抽象方法要被实现,所以不能是静态的,也不能是私有的。 10、接口可继承接口,并可多继承接口,但类只能单根继承。 参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用extends关键字来继承抽象类。如果子类不 是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。 它需要提供接口中所有声明的方法的实现 构造器 抽象类可以有构造器

黑马程序员-Java面向对象

拥有回忆 提交于 2020-02-11 11:53:45
1. 什么是面向对象? 将功能封装进对象,强调具备了功能的对象。 特点 : 将复杂的事情简单化, 面向对象将以前的过程中的执行者,变成了指挥者。 2. 类和对象的关系 类是具体事物的抽象,概念上的定义;对象即是该类事物实实在在存在的个体。 Java中用类描述事物就是描述事物的 属性 和 行为 。 成员变量和局部变量的区别? |-- 成员变量 : 定义在类中,整个类中都可以被访问; 随着对象的建立而建立,存在于对象所在的堆内存中; 有默认初始化值。 |-- 局部变量 : 只定义在局部范围内; 存在于栈内存中,作用的范围结束,变量空间会自动释放; 局部变量没有默认初始化值。 匿名对象 :当对对象方法仅进行一次调用时;匿名对象可以作为实际参数进行传递。 3. 面向对象的特征 |--封装: 隐藏对象的属性和实现细节,仅对外提供公共访问方式。 好处 :将变化隔离;便于使用;提高重用性;提高安全性。 构造函数 特点 :函数名与类名相同 不用定义返回值类型 不可以写return语句 作用 : 给对象初始化 |--继承:共性抽取。多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,提高代码复用性。 好处:提高了代码的复用性;让类与类之间产生了关系,多态的前提。 特点:Java只支持单继承,但是支持多层继承(继承体系) |--抽象类 特点 :1. 抽象方法只能定义在抽象类中

接口和抽象类有什么区别

☆樱花仙子☆ 提交于 2020-02-11 11:52:20
很多常见的面试题都会出诸如 抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口 这样的问题。本文我们将仔细讨论这些话题。 在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。 抽象类 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。以JDK中的GenericServlet为例: 1 2 3 4 5 6 7 8 9 public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { // abstract method abstract void service(ServletRequest req, ServletResponse res); void init() { // Its implementation } // other method related to Servlet } 当HttpServlet类继承GenericServlet时,它提供了service方法的实现: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class HttpServlet extends GenericServlet { void service