抽象类

java-抽象类的特点

别说谁变了你拦得住时间么 提交于 2020-03-10 19:43:57
1、抽象类和抽象方法必须用abstract关键字修饰。 -  abstract class 类名() -  public abstract void eat(); 2、抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口。 -  一个抽象类如果没有抽象方法,是可以定义为抽象类的。这么做的目的只有一个,就是不让其他类创建本类对象,交给子类完成。 3、抽象类不能实例化。那么抽象类如何实例化呢? -  按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。 4、抽象类的子类 -  要么是抽象类 -  要么重写抽象类中的所有抽象方法 5、abstract不能和哪些关键字共存? -   abstract和static *  被abstract修饰的方法没有方法体。 *  被static修饰的方法可以用类名.调用,但是类名.调用抽象方法是没有意义的。 -   abstract和final *  被abstract修饰的方法强制子类重写 *  被final修饰的方法不让子类重写,所以他两是矛盾的 -   abstract和private *  被abstract修饰是为了让子类看到并强制重写 *  被private修饰不让子类访问,所以他两是矛盾的 来源: CSDN 作者: Cici$ 链接: https://blog.csdn.net/m0_43455210

关于抽象类、抽象方法以及接口

谁都会走 提交于 2020-03-10 18:58:16
关于抽象类、抽象方法 abstract修饰 抽象类不能被实例化,抽象类里可以包含抽象方法也可以不包含;但有抽象方法的类必须是抽象类。 抽象类可以包含: 成员变量 方法(普通方法和抽象方法) 构造器(不是用来构造对象的,主要是给子类调用) 初始化块 内部类(接口、枚举) 含有抽象方法的类,包括: 直接定义了一个抽象方法; 或继承了一个抽象父类,但没有完全实现父类包含的抽象方法; 或实现了一个接口,但没有完全实现接口包含的方法 只能定义为抽象类。 利用抽象方法和抽象类的优势,可以更好地发挥多态的优势,使得程序更加灵活; abstract和final不能同时修饰同一个类或方法 当使用abstract修饰类时,表明这个类只能被继承; 当使用abstract修饰方法时,表明这个方法必须由子类提供实现(即重写)。 而final修饰的类不能被继承,final修饰的方法不能被重写,因此final和abstract不能同时使用。 abstract和static不能修饰同一个方法, 但它们可以同时修饰内部类。 abstract和private不能修饰同一个方法。 abstract不能修饰成员变量、局部变量,也不能修饰构造器。 使用模板模式的两种情形 抽象父类可以只定义需要使用的某些方法,把不能实现的部分抽象成抽象方法,留给子类去实现。 父类中可能包含需要调用其他方法的方法,这些被调方法既可以由父类实现

继承抽象类注意事项

自古美人都是妖i 提交于 2020-03-10 14:29:04
public abstract class PartBase : Space { #region 基本属性 /// <summary> /// 是否复合板 /// </summary> public bool IsCladPart { get; set; } /// <summary> /// 基层密度(kg/L) /// </summary> public double BaseDensity { get; set; } /// <summary> /// 复层密度(kg/L) /// </summary> public double CladDensity { get; set; } /// <summary> /// 基层材料 /// </summary> public string BaseMaterial { get; set; } /// <summary> /// 复层材料 /// </summary> public string CladMaterial { get; set; } /// <summary> /// 零件类型 /// </summary> public PartType PartType { get; set; } #endregion 基本属性 #region 控件属性 public TextBox TbBaseDensity { get;

抽象类中注意事项

南笙酒味 提交于 2020-03-10 14:28:43
一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义? 答:可以定义为抽象类,目的是不让其他类创建对象,不能实例化 abstract不能和哪些关键字共存,为什么? abstract 和 static 被 abstract 修饰 没有方法体 被 static 修饰,可以用类名.调用,但是类名.调用抽象方法是没有意义的 abstract 和 final 被 abstract 修饰的方法强制子类重写 被 final 修饰的不让子类重写,所以他俩是矛盾 abstract 和 private 被 abstract 修饰的是为了让子类看到并强制重写 被 private 修饰不让子类访问,所以他俩是矛盾的 来源: https://www.cnblogs.com/loaderman/p/6407175.html

抽象类和抽象的方法注意事项

天大地大妈咪最大 提交于 2020-03-10 14:24:16
1:如果一个类用Abstract修饰,那么该类就是抽象类; 2:抽象方法中可以有方法体,也可以有普通方法 3:抽象方法不能有方法体,甚至连{}都不能有,直接以分号结尾; 4:抽象类可以有构造 5:抽象类不能实例化 6:抽象类不能是密封类或者静态类的 为什么不能是静态类的: 静态类会静态存储区构建一个类的实例,而抽象类不能实例化,所以两者是相违背的 为什么不能是密封类的: 抽象类是让别人去继承 ,然后重写抽象方法 密封类不想让别人去继承,两者是相违背的 7:如果一个类继承自抽象类,必须重写抽象类的所有方法,除非子类本身也是抽象类 8:一键重写的快捷键是:Ctrl+.,或者是alt +shif +F10 9:抽象类中的抽象方法用来约束子类方法的格式的 10:抽象方法必须存在于抽象类中 来源: https://www.cnblogs.com/3020815dzq/p/8304040.html

Java基础知识复习一

为君一笑 提交于 2020-03-10 11:46:40
1、JDK,JRE,JVM三者之间的联系和区别 ①、JVM,即Java Virtual Machine,Java虚拟机 JVM并不能识别.java文件,只能识别.class文件,JVM能识别.class文件中的字节码指令并调用操作系统完成指定的个动作,所以JVM是Java跨平台的核心。 ②、JRE,Java Runtime Environment,Java运行时环境 JRE主要包含2个部分,JVM的标准实现和Java的一些基本类库。相比于JVM,多出来的是一部分Java类库。 ③、JDK,Java Development Kit,开发工具包 JDK是整个Java开发的核心,它集成了JRE和一些好用的小工具,例如:javac.exe,java.exe,jar.exe等。 因此,如果只是部署和运行Java程序,只需安装JRE即可;如果要开发Java程序则需要安装JDK。 2、Java跨平台的原因 跨平台的含义是不依赖于操作系统和硬件环境。Java编译器将Java编译成与平台无关的class字节码文件,然后由JVM执行class字节码文件,该字节码是与平台无关的,是介于源代码和机器指令之间的一种状态,在后续的执行中,JVM将class字节码文件解释成与平台相对应的机器指令,这样既减少了编译次数,又增强了程序的可移植性,因此被称为“一次编译,多处运行!” 3、接口和抽象类的区别 ①、接口

抽象类和模板设计模式

我是研究僧i 提交于 2020-03-10 06:04:54
总是以提问的形式来开始我的总结 ,为什么会出现抽象类 ?有哪些应用 ? 上一次我们已经说过了 ,继承可以增加代码的复用性 ,子类可以把父类的方法拿过来直接用 ,也可以重写父类的方法 。那么好 ,假设有一个 Animal 父类中含有一个 “叫“ 方法 ,有 n 多个动物继承了 Animal ,结果由于动物的独特性每一个子类都需要重写父类的 “叫“ 方法 。那么问题来了 ,所有的子类都重写了父类的方法 ,我何必还要在父类中实现方法呢 ? 所以我们就可以把 “叫“ 这个方法给抽象化 ,这样就不用实现方法体了 ,岂不是美滋滋 。综上 ,我们可以把那些父类中没办法给出具体实现的方法给抽象化 。只需在方法的声明中添加 abstract 关键字即可 。但是此时编译会报错 ,因为含有抽象方法的类必须是抽象类 ,所以我们也要给类加上 abstract 。当然抽象类中可以包含非抽象的方法 。那为什么又说抽象类不能被实例化呢 。你想啊 ,我实例化一个对象 ,结果你给了我一个抽象的方法 ,我怎么去执行啊 ?很明显不行的嘛 。 如果你真的理解了抽象类的设计原理 ,那么理解模板设计模式应该不成问题 。顾名思义 ,模板设计模式就是指固定的套路 。假如你有如下需求 ,计算代码的运行时间 。套路就是记录开始时间 ,运行方法 ,记录结束时间 ,最后一减得出结果 。可以像这样实现 。 public abstract

深搜之抽象类DFS

二次信任 提交于 2020-03-10 00:27:38
抽象类DFS 上次总结了dfs迷宫类,详见我博客: 深搜之迷宫类 最近刷了一些蓝桥杯的真题,这次就总结一下没有图的抽象类的深搜下面是从刷的蓝桥杯真题和计蒜客中总结的一些抽象dfs题型 抽象深搜常见有以下两种类型: 1.凑算式类 2.排列组合类 (一)、凑算式类 九数组分数 /* 1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法? //答案: //5823 17469 //5832 17496 */ 思路:九位数字组成一个分数1/3 只能是分母5位,分子4位 package 凑算式类 ; public class 九数组分数 { //分子为四位数 分母为五位数 static int [ ] a = new int [ 9 ] ; static boolean [ ] vis = new boolean [ 10 ] ; static boolean f ; static void dfs ( int index ) { //表示试填第index位 // if(f) { // return; // } //在这里输出结果否则存放在数组中的结果可能在return后被修改了 if ( index == 9 ) { //凑到了最后一位 int s = ( a [ 0 ] * 1000 + a [ 1 ] * 100 + a [ 2 ] * 10 + a [ 3 ] )

读Java程序员面试笔记,总结Java基础知识(二)

爷,独闯天下 提交于 2020-03-09 14:55:38
Java基础知识之面向对象技术 面向对象有哪些特征 面向对象主要特征:抽象、继承、封装和多态。 抽象。抽象是忽略一个主题中与当前目标无关的那些方面,一边更充分地注意与当前目标有关的方面,抽象包括两个方面:一是过程抽象;二是数据抽象。 继承。在编程中,对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。子类可以从他的父类那里继承方法和实例变量,并且子类可以修改或增加新的方法使之跟适合我们的需要。 封装。封装是指将客观事物抽象成类,每个类对自身的数据和方法实行保护。类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。(也就是类的权限修饰的权限,权限范围内就是可信,反之。) 多态。多态是指允许不同类的对象对同一消息做出响应。多态包括参数多态和包含多态。多态性语言具有灵活、抽象、行为共享、代码共享等优势,很好的解决了应用程序函数同名的问题。 面向对象的开发方式有什么优点 较高的开发效率 。(面向对象的开发方式,对象都是从我们现实事物抽象而来,映射为开发的对象,那么我们对开发的对象的各种特征,以及对象的功能都是直观明了的。) 保证软件的鲁棒性。(面向对象的开发中,重点是对象,还有对象延展出来的类,方法都在开发中经常使用,自然而然对软件的鲁棒性起到了很好的促进作用)

设计模式之适配器模式

前提是你 提交于 2020-03-09 00:10:44
适配器模式 概述 适配器模式是一种使用频率非常高的结构型设计模式,如果再系统中存在不兼容的接口,可以通过引入一个适配器来使原本因为接口不兼容而不能一起工作的两个类能够协调工作 将一个类的接口转换成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作 适配器模式 Target(目标抽象类) 目标抽象类定义客户所需的接口,可以是一个抽象类或者接口,也可以是具体类,再适配器中,由于java语言不支持多重继承它只能是接口 Adapter(适配器类) 它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器Adapter是适配器模式的核心,在类适配器中,它通过实现Target接口并继承Adaptee类来使二者产生联系,在对象适配器中,它通过继承target并关联一个Adaptee对象使二者关联 Adaptee(适配者类) 适配者即适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下甚至没有适配者类的源代码 /** * @ClassName: CarControoler * @Description: 汽车控制类,充当目标抽象类 * @Author Crazy * @DateTime 2019年11月2日 下午8:28:28 */ public abstract class