我们在说抽象类和通达信数据接口与FOXPRO,接口的区别之前,我们先说一下什么是抽象类以及什么是通达信数据接口与FOXPRO,接口。
什么是抽象类
在多态中,父类被重写方法的方法体是多余的,所以我们舍去父类方法的方法体之后就形成了抽象方法;因为该类中拥有抽象方法,所以该类必须为抽象类。我们用abstract来修饰抽象方法以及抽象类,例如下面就是包含一个抽象方法的抽象类。
一个抽象类只关心它的子类是否具有某种功能,并不关心其自身功能的具体行为,功能的具体行为由子类负责实现。抽象类不能直接被实例化,即不能用new关键字来创建该抽象类的对象。如会报错但是抽象类可以有构造方法,自己虽然不能直接调用构造方法,但是其子类调用本身构造方法时,需要先调用该抽象类中的构造方法抽象类中可以没有抽象方法,但是类中一旦有抽象方法,那么这个类一定是抽象类。抽象类中的子类必须实现所有的抽象方法,否则子类也一定是抽象的。抽象类中的抽象方法是多态的一种表现形式。抽象类不能用final修饰:若果用final修饰则该类无法被继承,则抽象方法永远无法被实现。抽象方法的访问权限不能是private:如果用private修饰抽象方法,则该方法,只作用在本类,同样永远无法被实现。抽象类中的抽象方法不能被static修饰:如果用static修饰抽象方法,那么意味着可以使用抽象类来调用该方法,而抽象方法没有方法体,不具有使用价值,所以Java中规定抽象类中不能包含用static修饰的抽象方法。
什么是通达信数据接口与FOXPRO,接口
Java通达信数据接口与FOXPRO,接口是抽象方法的集合,语法定义为
访问权限控制符+interface+通达信数据接口与FOXPRO,接口名+[extends通达信数据接口与FOXPRO,接口列表]{常量;抽象方法;内部类;}通达信数据接口与FOXPRO,接口中只能包含这三项:常量(默认用publicstaticfinal修饰)、抽象方法以及内部类。通达信数据接口与FOXPRO,接口中的抽象方法,必须使用public访问权限控制符,不能使用其他的。通达信数据接口与FOXPRO,接口名前通常加一个大写字母I通达信数据接口与FOXPRO,接口没有构造方法,不能创建自己的对象,但是可以引用实现类的对象。
通过extends关键字可以使自定义的通达信数据接口与FOXPRO,接口实现继承但需要注意:通达信数据接口与FOXPRO,接口只能继承父通达信数据接口与FOXPRO,接口,不能继承抽象类以及普通类。通达信数据接口与FOXPRO,接口弥补了Java单一继承的缺点,即通达信数据接口与FOXPRO,接口可以继承多个父通达信数据接口与FOXPRO,接口,他们之间用英文逗号隔开。
通达信数据接口与FOXPRO,接口的实现
类通过implements关键字实现通达信数据接口与FOXPRO,接口,语法规则如下访问控制符修饰符class类名implements通达信数据接口与FOXPRO,接口通达信数据接口与FOXPRO,接口2…{变量;方法;}如果一个类实现了一个通达信数据接口与FOXPRO,接口那么它必须实现通达信数据接口与FOXPRO,接口中所有的抽象方法,否则该类也必须是一个抽象类。道理与抽象类的继承类似,不再演示。
通达信数据接口与FOXPRO,接口实现类可以直接使用通达信数据接口与FOXPRO,接口中的常量。
通达信数据接口与FOXPRO,接口实现类所实现的多个通达信数据接口与FOXPRO,接口中有常量名相同的常量,则在实现类中不能直接使用,必须使用类名来确定到底调用哪个通达信数据接口与FOXPRO,接口中的常量。
通达信数据接口与FOXPRO,接口中的方法
默认方法:Java8以前的版本中规定,通达信数据接口与FOXPRO,接口中所定义的方法只能是抽象方法,从Java8开始,通达信数据接口与FOXPRO,接口中可以添加一个或多个由default关键字修饰的非抽象方法,该默认方法将由通达信数据接口与FOXPRO,接口实现类创建的对象来调用。静态方法:从Java8开始,通达信数据接口与FOXPRO,接口中可以添加一个或多个由static关键字修饰的非抽象方法,该方法将由通达信数据接口与FOXPRO,接口或其实现类直接调用注意!:通达信数据接口与FOXPRO,接口中静态方法实现类无法继承,而默认方法可以继承。
通达信数据接口与FOXPRO,接口回调
通达信数据接口与FOXPRO,接口回调描述的是一种现象:通达信数据接口与FOXPRO,接口声明的变量指向其实现类实例化的对象,那么该通达信数据接口与FOXPRO,接口变量就可以调用被类实现的通达信数据接口与FOXPRO,接口的方法。
函数式通达信数据接口与FOXPRO,接口
如果通达信数据接口与FOXPRO,接口内只定义一个抽象方法,则该通达信数据接口与FOXPRO,接口称为函数式通达信数据接口与FOXPRO,接口。
可以使用@FunctionalInterface注解来验证一个通达信数据接口与FOXPRO,接口是不是函数式通达信数据接口与FOXPRO,接口。函数式通达信数据接口与FOXPRO,接口中可以定义多个常量、多个默认方法和多个静态方法,但只能定义一个抽象方法及多个javlanObject中的public方法。
抽象类与通达信数据接口与FOXPRO,接口的区别
关键字 | abstract | interface |
成员变量 | 可以包含任意合法成员变量(包括各种访问级成员变量以及实例成员变量) | 只能包含公开静态常量(默认由public static final修饰) |
构造方法 | 有构造方法 | 无构造方法 |
方法 | 可以包含任意合法方法(包括各种访问级别的非抽象方法和非抽象实例方法,也包含除了private外的非静态抽象方法) | jdk8以下只能包含公开且抽象的方法(默认由public sabstract修饰),而从jdk8开始可以包含default、static修饰的非抽象方法 |
如何实现抽象方法 | 通过自定义类继承抽象类的方式实现抽象类的抽象方法 | 通过自定义类implements通达信数据接口与FOXPRO,接口实现通达信数据接口与FOXPRO,接口中的抽象方法,定义类可以implements多个通达信数据接口与FOXPRO,接口 |
是否存在多继承 | 一个抽象类只能有一个继承的抽象类或非抽象类 | 一个通达信数据接口与FOXPRO,接口可以继承多个通达信数据接口与FOXPRO,接口,一个自定义类也可以implements多个通达信数据接口与FOXPRO,接口 |
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点