抽象类

java知识点总结

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-29 07:40:34
1.Java三大特性 三大特性 :继承 ,封装,多态。 封装 :是指属性私有化,使用者可通过get ,set等方法来访问属性,隐藏具体属性和实现细节,仅仅对外开放接口,控制车程序中属性的访问级别。 封装的目的 :增加安全性和简化编程,使用者不必在意具体实现细节,而只通过外部接口即可访问类的成员。 继承 :是指将相同的方法和成员提取出来,新建一个类 继承的目的 :代码复用 多态 :多态又分为设计时多态和运行时多态 设计时多态:即重载,即java方法名相同而参数个数或参数类型不同 运行是多态:即重写,是指java运行根据调用者的类型,判断调用哪个方法。 多态的目的 :增加代码的灵活度 2.abstract class和interface的区别 abstract class抽象类 : 构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类。 interface接口 : 接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 区别 : 1、抽象类中可以有构造函数,接口里没有。 2、抽象类中可以有普通成员变量,接口中没有普通成员变量。 3、抽象类可以有包含非抽象的普通方法,接口中的方法都必须是抽象的。 4

一、模板设计模式(与抽象类特性相关)

为君一笑 提交于 2020-01-29 01:37:20
##模板设计模式 1.1简介 模版设计模式的本质是利用了抽象类对子类强加的覆写的限制实现的,例如:在现实生活之中,都需要进行数据表格的填写,这些表格只有填写正确了才可以获取正确的内容。 模版设计主要是在父类(抽象类)定义一些公共的行为准则,而后需要进行某些处理的时候子类进行相应的方法覆写即可。 (模板设计模式在整个的Java中最为常见的应用就是Servlet程序开发) 现在假设有三种类,基本关系如下: ·人:吃饭、工作、睡觉; ·猪:吃饭、睡觉; ·机器人:补充能量、工作。 例:代码实现模板设计模式 import com.sun.jdi.request.VMDeathRequest; abstract class AbstractAction{ //定义公共行为 public static final int EAT = 1; public static final int SLEEP = 2; public static final int WORK = 3; public abstract void eat(); public abstract void sleep(); public abstract void work(); public void command (int ch){ switch (ch){ case EAT: this.eat(); break;

抽象类与接口

二次信任 提交于 2020-01-28 19:14:36
抽象类的概述: 抽象定义: •抽象就是从多个事物中将共性的,本质的内容抽取出来。 •例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。 抽象类: •Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。 抽象方法的由来: •多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。 •例如:狼和狗都有吼叫的方法,可是吼叫内容是不一样的。所以抽象出来的犬科虽然有吼叫功能,但是并不明确吼叫的细节。 抽象类的特点:  抽象类和抽象方法必须用abstract关键字来修饰。 抽象方法只有方法声明,没有方法体,定义在抽象类中。 •格式:修饰符 abstract 返回值类型 函数名(参数列表) ; 抽象类不可以被实例化,也就是不可以用new创建对象。原因如下: •抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实例。例如:犬科是一个抽象的概念,真正存在的是狼和狗。 •而且抽象类即使创建了对象,调用抽象方法也没有意义。 抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象方法后才可以创建对象,否则该子类也是抽象类。 抽象类的举例和代码讲解:  雇员示例: •需求:公司中程序员有姓名,工号,薪水,工作内容。

接口和抽象类

假如想象 提交于 2020-01-28 11:04:32
接口和抽象类 (1)java之所以引入接口,就是为了弥补不能多继承的缺点,在java中每个类只能有一个超类,但却可以实现多个接口。 (2)接口的思想不允许出现变量,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现 implements)开放。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。 (3)接口可以有静态常量,并且这个常量一定是静态的,为什么? 因为static是所有对象可以访问,而且可以直接通过类名访问。接口没有对象,必须通过类名来访问所以是要静态的。 (4)区别: 实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。 构造函数:抽象类可以有构造函数;接口不能有。 实现数量:类可以实现很多个接口;但是只能继承一个抽象类。 访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。 来源: CSDN 作者: 做自己想变成的那个人 链接: https://blog.csdn.net/kuaimeidong/article/details/103886012

JAVAEE细细看 进阶 02 - 多态

社会主义新天地 提交于 2020-01-28 04:55:53
多态 同一个对象,在不同时刻表现出来的不同形态 举例:猫 我们可以说猫是猫:猫 cat = new 猫(); 我们也可以说猫是动物:动物 animal = new 猫(); 这里猫在不同的时刻表现出来了不同的形态,这就是多态 一. 多态的前提和体现 有继承/实现关系(父类,接口) 有方法重写 有父类引用指向子类对象 二. 多态中成员的访问特点 成员变量:编译看左边,执行看左边 (前提是变量不能封装,即不能私有) 成员方法:编译看左边,执行看右边 为什么成员变量和成员方法的访问不一样呢: 答案:因为成员方法有重写,而成员变量没有 三. 抽象类 (abstract) 抽象类的特点: 抽象类的成员特点: 四. 接口 (interface) 概述: 接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用 Java中的接口更多的体现在对行为的抽象上 接口的特点: a. 接口用关键字interface修饰 public interface 接口名{} b. 类实现接口,用implements 表示 public class 类名 implements 接口名 {} c. 接口不能实例化 接口如何实例化?参照多态的方式,通过实现类对象的实例化,这叫做接口多 态 多态的形式:具体类多态,抽象类多态,接口多态 多态的前提:有几成或者实现关系;有方法重写;有父(类/接口)引用指向(子/ 实现

PHP中抽象类和接口的区别

半世苍凉 提交于 2020-01-28 03:02:29
抽象类 抽象类无法被实例化 ,它的作用是为所有继承自它的类定义(或部分实现)接口。 使用 abstract 关键字定义抽象类。 可以像在普通类中那样在抽象类中创建方法和属性,在大多数情况下, 一个抽象类至少包含一个抽象方法 ,抽象方法也是通过 abstract 关键字声明的。 抽象方法只有方法声明,没有方法实现 。不能编写方法体。 abstract class ShopProductWriter { protected $product = [ ] ; /** * 抽象类中可以定义普通方法 */ public function addProduct ( $shopProduct ) { $this - > product = $shopProduct ; } /** * 定义一个抽象方法,只有方法声明,没有方法实现 */ abstract public function write ( ) ; } 任何继承自抽象类的类都必须实现所有的抽象方法 ,否则它自己就必须被定义为抽象类。子类不能仅仅实现抽象方法,还必须遵守方法签名。这意味着实现方法的访问控制不能比抽象方法更严格。实现方法还需要有与抽象方法相同数量的参数,以及相同的类型提示。 class XmlProductWriter extends ShopProductWriter { /** *

C#面向对象--类

自闭症网瘾萝莉.ら 提交于 2020-01-27 15:16:35
  一、类(Class)是CTS中五种基本类型之一,是一种引用类型,封装了同属一个逻辑单元的数据(Data)和行为(Behavior),这些数据和行为通过类中的成员表示;使用class关键字定义类: //定义一个公共类MyClass public class MyClass { public int MyField; //声明一个int类型的公共实例字段 public void MyFunc() //声明一个公共实例方法 { /do… } } //创建类MyClass的实例并赋值给MyClass类型的变量myObj MyClass myObj = new MyClass();   1.在命名空间中定义的类默认为内部类,即internal class,此时只有当前项目中的代码才能访问它;通常情况下会将类指定为公共类,即public class,此时可以由其他项目中的代码来访问它;   ※在命名空间中定义的类只能为public或internal,在其它类型内部定义的类为该类型的嵌套类型,可以指定任何访问修饰符;   二、在定义类时,还可以指定类是抽象类或密封类,二者不可同时指定;   1.抽象类,即abstract class,不能被实例化,只能被继承;   ※抽象类中可以声明抽象成员(只有抽象类中才可以声明抽象成员),也可以声明任意非抽象成员(虽然无法实例化

抽象类的构造函数

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-27 09:40:25
先通过一个实类继承来理解: Class Animals{ public Animals(){} public void eat(); } Class Dog extends Animals{ //super();不写父类构造的情况下,相当于会默认有个super(),调用父类的空参构造 pubilc Dog(){} @Override public void eat(){ print(“狗吃肉”); } } 在有此继承关系的情况下,如果对dog进行实例化即new dog()操作,那么一定会调用new Animals()操作,这时候就需要调用animals的构造函数后才能调用子类的构造函数。 这样就好理解了,抽象类也是可以继承的,而继承后就会有子类的实例化的操作,而如果抽象类中没有构造方法,那继承此抽象类的子类将无法实例化。 来源: CSDN 作者: Victoria Coleone 链接: https://blog.csdn.net/qq_33581012/article/details/103846236

Java-类、抽象类、接口

点点圈 提交于 2020-01-27 04:58:25
Java-类、抽象类、接口 类、抽象类、接口(接口只是个类型)——简化概括 为什么要用接口而不是抽象类 容易混淆的误区——实现抽象方法与重写普通方法的本质 接口的应用场景——继承、实现的选择 总结 类、抽象类、接口(接口只是个类型)——简化概括 类继承 —>子类完全继承父类特点 抽象类继承 —>继承时抽象的部分不同的子类可以有不同的实现 接口继承 —>所有成员在子类都可以有不同的实现 为什么要用接口而不是抽象类 这要看二者适用的情况 当 个性大于共性 时,适合接口,如鸟和飞机,适合抽象出一个飞的 接口 当 共性大于个性 时,适合抽象类,如老鹰和麻雀,适合抽象出一个鸟的父 类 另外接口可以实现 多重继承 ,这也是一个特点 ①.类可以实现多个接口但只能继承自一个抽象类,从抽象类派生出的子类同样可以实现接口,从而,我们能得出一个结论:接口是为Java实现多继承而存在的 ②.抽象类中可以存在非抽象的方法,可接口不能存在非抽象的方法,并且接口里面的方法只是一个声明,必须用 public abstract来修饰,没有具体的实现 ③.抽象方法中的成员变量可以被不同的修饰符修饰,而接口中的成员变量默认都是静态常量 ④.抽象类是对对象进行的抽象,而接口是一种行为规范,这一点是比较重要的. 基于以上四点抽象类和接口的不同,我们可以知道了为什么有了抽象类还要用接口. 容易混淆的误区—

控制反转和依赖注入

故事扮演 提交于 2020-01-27 04:42:30
转自:https://blog.csdn.net/zccai1205/article/details/51759319 经常听到这两个概念,感觉深不可测,其实就在实际运用之中 依赖注入 设计模式中,经常用到变依赖具体为依赖抽象,形成抽象类,接口,这样就摆脱了依赖的具体类型。 在这个过程中,怎么选择客户程序需要满足的抽象类型的具体类型呢? 在一个类中我们有时候需要访问其它的类的实例这个时候就需要使用依赖注入了 1:获取当前的系统时间的对象 using System; using System.Diagnostics; namespace MarvellousWorks.PracticalPattern.Concept.DependencyInjection.Example1 { class TimeProvider { public DateTime CurrentDate { get { return DateTime.Now; } } } public class Client { public int GetYear() { TimeProvider timeProvier = new TimeProvider(); return timeProvier.CurrentDate.Year; } } } 2:现在需要根据不同的精度客户端可以选择使用不同的方式,于是出现了抽象接口