总结:多继承的fun1和fun2分别是同一个函数和重载的两个函数,但是fun3只是返回值不同,不符合java重载的规范,编译器无法区分,所以不论写voidfun3还是Stringfun3还是两个都写,都是错误的。
interfaceInter1{}interfaceInter2{}interfaceInter3extendsInter2,Inter1{}//创建一个类实现一个接口,或者多个接口classInterImpl3implementsInter1,Inter2{}//一个类还可以在继承一个类的同时实现多个接口classInterImpl4extendsInterImpl3implementsInter3{}继承,抽象类,接口代码思路:分析:从具体到抽象实现:从抽象到具体使用:使用具体类Java面试知识点Java中的单继承和多继承多继承的优缺点优点:对象可以调用多个父类中的方法缺点:如果派生类所继承的多个父类有相同的父类,而派生类对象需要调用这个祖先类的方法,就会容易出现二义性。菱形继承结构
成员变量只能是常量。默认修饰符:publicstaticfinal构造方法没有构造方法成员方法只能是抽象方法。默认修饰符:publicabstract类与类:继承关系。只能单继承,可以多层(重)继承。类与接口:实现关系。可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口。接口与接口:继承关系。可以单继承,也可以多继承。
具体类多态、抽象类多态、接口多态
接口的特点:
有关Java继承的一些问题
抽象类和接口的区别成员区别抽象类:成员变量:可以是变量,也可以是常量构造方法:有构造方法成员方法:可以是抽象方法,也可以是非抽象方法接口:成员变量:只能是常量。默认修饰符publicstaticfinal成员方法:只能是抽象方法。默认修饰符publicabstract关系区别类与类:继承关系。只能单继承,可以多层(重)继承。类与接口:实现关系。可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口。接口与接口:继承关系。可以单继承,也可以多继承。设计理念区别抽象类被继承体现的是:'isa'的关系。抽象类定义的是共性功能。接口被实现体现的是:'likea'的关系。接口定义的是扩展功能。
如若写成interfaceAextendsB,C,D可以编译通过,这样是不是违背了JAVA的单继承特性呢?接口可以继承多个接口是因为接口里面的定义的方法都是未实现的,不会增加复杂性。接口不是类,而是对类的一组需求的描述。接口绝不能含有实例域,也不能在接口中实现方法。接口可以实现多继承不会增加代码的复杂性。多继承是发生在执行期间的,而不是在编译期间,所以可以编译通过,并且不违背Java是单继承的。
接口中不能存在构造方法接口中的所有方法都是抽象方法publicabstractvoidshow();定义一个类实现这个接口
class InterImpl implements inter{
@Override
public void show() {
System.out.println('来自接口中扩展的抽象方法');
}
}
//定义一个抽象类,让这个抽象类实现接口,此时这个抽象类不需要重写接口中的抽象方法
abstract class AbstractInterImpl implements inter{}
public class InterfaceDemo {
public static void main(String[] args) {
//利用多态的方式将接口进行实例化
inter i = new InterImpl();
//试图更改成员变量的值
//i.num = 30;//接口中所有的变量都会默认被final修饰,所以我们的接口中说白了只能定义常量,不能定义变量
//System.out.println(i.num);
System.out.println(inter.num);
}
}
接口的成员特点:
定义接口要用关键字interface表示格式:interface接口名{}类实现接口用implements表示格式:class类名implements接口名{}接口不能实例化接口如何实例化呢?按照多态的方式,由具体的子类实例化。其实这也是多态的一种,接口多态。接口的实现类要么是抽象类要么重写接口中的所有抽象方法多态的前提:A:有继承或者实现关系B:有方法重写C:有父类引用或者父接口引用指向子类或者实现类对象
为什么JAVA改成只能单继承?因为在C++中一个类是可以继承自多个类,但这样的机制会使类的结构变的很复杂,所以JAVA将C++这一机制通过接口得以改善。JAVA中不允许类多重继承,只能单一继承,但有些情况单一继承并不能表达出现实世界中的某些逻辑关系,所以就提出了通过接口来实现多重继承。
java与C++的不同点在于多继承。Java:不能多继承,只能单继承,但可以实现多个接口C++:可以实现多继承。例如:classAextendsBimplementsC,D,E{}
多态分类:
接口和抽象类的关系最后分析:
interfaceinter{}在接口中定义一些变量:接口中所有的变量都会默认被final修饰,所以我们的接口中说白了只能定义常量,不能定义变量接口中的成员变量不仅被final默认修饰,还被static默认修饰我们的接口中的变量全部是静态常量publicstaticfinalintnum=20;
为什么接口可以继承多个接口?因为接口定义的都是抽象的方法,而且不能在接口中实现方法。接口继承多个接口,并不会使接口的结构变得很复杂。相反,这样做,还能给一个团队在开发的过程中,提供很多便利。单继承指的是class,而不是interfacinterface是可以多继承的。接口可以多继承可以被多实现,因为接口中的方法都是抽象的,这些方法都被实现的类所实现,即使多个父接口中有同名的方法,在调用这些方法时调用的是子类的中被实现的方法,不存在歧义;接口的中只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。对于一个接口继承多个父接口的情况也一样不存在这些缺点。所以接口可以多继承。
文章为作者独立观点,不代表股票交易接口观点