抽象类

Java第四阶段

余生长醉 提交于 2020-02-24 00:59:29
接口 接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 内部类接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类 作用: 看起来并不相关的类内对象若有统一的行为,即可设置一个接口。 接口的声明 语法格式如下: 内部类接口有以下特性: 1.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。 2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。 3.接口中的方法都是公有的。 接口的实现 利用接口设计类的过程,称为接口的实现。使用implements关键字。 语法 : public class 类名称 implements 接口名称{ //在类体中实现接口的方法 //本类声明的更多变量和方法 } 注意 : 必须实现接口中的所有方法。 来自接口的方法必须声明成public。 以下是一个利用接口计算面积的例子: 运行结果: 实现多个接口的语法: 一个类可以实现多个接口,通过这种机制可实现对设计的多重继承。

面向对象之接口与抽象性

三世轮回 提交于 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 接口 { 重写接口中方法 } 在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法

初学Java(4)

故事扮演 提交于 2020-02-22 23:03:53
一、掌握内部类 所谓内部类就是在一个类内部进行其他类结构的嵌套操作。 内部类的优点: 1、内部类与外部类可以方便的访问彼此的私有域(包括私有方法、私有属性)。 2、内部类是另外一种封装,对外部的其他类隐藏。 3、内部类可以实现java的单继承局限。 二、掌握抽象类与接口的概念和区别 区别: 1、表示内容不同 (1)抽象类:抽象类表示该类中可能已经有一些方法的具体定义。 (2)接口:接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。 2、性质不同 (1)抽象类:抽象类是对象的抽象。 (2)接口:接口是一种行为规范。 3、成员变量不同 (1)抽象类:抽象类中的成员变量可以被不同的修饰符来修饰。 (2)接口:接口中的成员变量默认的都是静态常量(static final)。 三、掌握匿名类 匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。 匿名类有两种实现方式: 1、继承一个类,重写其方法。 2、实现一个接口(可以是多个),实现其方法。 特点: 1、 匿名类和局部内部类一样,可以访问外部类的所有成员。如果匿名类位于一个方法中,则匿名类只能访问方法中 final 类型的局部变量和参数。 2、 匿名类中允许使用非静态代码块进行成员初始化操作。 3、匿名类的非静态代码块会在父类的构造方法之后被执行。 四、异类  在java中

类和对象

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

Java基础(二)

爷,独闯天下 提交于 2020-02-22 08:28:00
静态方法调用非静态成员的非法性理解 静态方法在类没有实例化的时候就已经被分配内存真正存在的了;而非静态方法这时候在内存上是没有存在的,所以静态方法这时候调用非静态成员是根本调用不到的,称为非法。 Java中定义一个不做事且没有参数的构造方法的用处 java程序在执行子类的构造方法之前,如果没有用super()来调用父类的特定构造方法,则会默认调用父类没有参数的构造方法,这时候,父类只是定义了有参数的构造方法的话,就会报错,因为找不到没有参数的构造方法,解决方法就是在父类上定义一个不做事且没有参数的构造方法。 接口和抽象类的区别 (1) 接口方法默认是public且不可实现,而抽象类可以有非抽象方法 (2) 接口中除了static,final变量,不能有其他变量;而抽象类中不一定 (3) 一个类可以实现多个接口,但只能实现一个抽象类;接口本身可以通过extends拓展多个接口 (4) 接口方法默认修饰符public,抽象方法原本就是为了被重写,所以不能使用private (5) 从设计层面来看,抽象类是对类的抽象,是一种模板设计;接口是对行为的抽象。是一种行为的规范。 成员变量和局部变量区别 (1) 成员变量属于类,可以被public,private,static修饰;而局部变量属于方法,不能被访问限制符及static修饰 (2) 从内存的存储方式来看,若成员变量用static修饰

每日刷题总结

匆匆过客 提交于 2020-02-22 05:27:18
1.关于AOP错误的是?(C) A.AOP将散落在系统中的“方面”代码集中实现 B.AOP有助于提高系统可维护性 C.AOP已经表现出将要替代面向对象的趋势 D.AOP是一种设计模式,Spring提供了一种实现 解析:AOP和OOP都是一套方法论,也可以说成设计模式、思维方式、理论规则等等。 AOP不能替代OOP,OOP是obejct abstraction,而AOP是concern abstraction,前者主要是对对象的抽象,诸如抽象出某类业务对象的公用接口、报表业务对象的逻辑封装,更注重于某些共同对象共有行为的抽象,如报表模块中专门需要报表业务逻辑的封装,其他模块中需要其他的逻辑抽象 ,而AOP则是对分散在各个模块中的共同行为的抽象,即关注点抽象。一些系统级的问题或者思考起来总与业务无关又多处存在的功能,可使用AOP,如异常信息处理机制统一将自定义的异常信息写入响应流进而到前台展示、行为日志记录用户操作过的方法等,这些东西用OOP来做,就是一个良好的接口、各处调用,但有时候会发现太多模块调用的逻辑大都一致、并且与核心业务无大关系,可以独立开来,让处理核心业务的人专注于核心业务的处理,关注分离了,自然代码更独立、更易调试分析、更具好维护。 核心业务还是要OOP来发挥作用,与AOP的侧重点不一样,前者有种纵向抽象的感觉,后者则是横向抽象的感觉, AOP只是OOP的补充

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

java接口与抽象类

家住魔仙堡 提交于 2020-02-22 05:01:44
2015-10-19 21:12:36 知道接口和抽象类有所不同,但总是考虑不全,现在总结一下: 抽象类: [public|proteced] abstract class 类名称 [extends父类名列表] [implements接口名列表] { [public] abstract 返回值类型 方法名(参数列表); //其他 } 接口: [public]interface 接口名称 [extends父接口名列表] { //静态常量 [public] [static] [final] 数据类型变量名=常量值; //抽象方法 [public] [abstract] [native] 返回值类型 方法名(参数列表); } 1、接口的修饰符只有public,抽象类必须在类前用abstract修饰。 2、接口中的变量会被隐式地指定为 public static final 类型(必须给其初值,在实现类中不能重新定义,也不能改变其值),方法会被隐式地指定为 public abstract 类型 ,即接口中所有的方法都必须是抽象方法。 抽象类可以有非抽象 的成员变量和方法,它要求 至少有一个抽象方法。 补充:如果一个类不包含抽象方法,只是用 abstract 修饰的话也是抽象类,也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题,因为如果一个抽象类不包含任何抽象方法

Java 抽象类和接口

断了今生、忘了曾经 提交于 2020-02-22 05:00:36
特点: A:抽象类和抽象方法必须要用abstract关键字修饰 B : 抽象类中不一定有抽象方法,但是有抽象方法的类必须是抽象类 C: 抽象类不能实例化,它不是具体的 D : 抽象类有构造方法,但是不能初始化,构造方法是用于子类访问父类数据的初始化 E : 如果不想重写抽象类的方法,子类也是一个抽象类,如果子类不是抽象类,要重写方法 接口的特点: A:接口用关键字interface表示 interface 接口名 {} B: 类的实现接口用implements表示 class 类名 implements 接口名 {} c:接口不能实例化 需要按照多态的方式来实例化 接口成员特点: 成员变量:只能是常量,并且是静态的 默认修饰符:public static final ,建议自己手动给出 构造方法:接口没有构造方法,所有类都默认继承一个类:Object 成员方法:只能是抽象方法 默认修饰符:public abstract ,建议手动给出 来源: https://www.cnblogs.com/lcl15/p/6671224.html