------- android培训、java培训、期待与您交流! ----------
java虽然没有多继承,但是它有另外一个东西,接口的多实现.
简单理解为java只有一个干爹,但是可以找n个干妈╮(╯▽╰)╭
其实我更倾向于将它理解为一夫多妻制。
为什么要有多实现呢?
可以这样理解:
现在要出去旅游,需要带1000元钱,相机,手机等等。
1,找(extends)干爹要,但是干爹那只有1000元钱,没有相机和手机,怎么办?
2,那还用说,找(implements)干妈啊,但是一个干妈1号只有相机,没手机怎么办?
3,简单,再找(implements)另外一个干妈,还不够呢,再找(implements)一个呗。
接口: interface
固定格式:
常量:publicstatic final
方法:publicabstract
记住:接口中的成员都是public
接口:是不可创建对象的,因为有抽象方法。
需要被子类是实现(implement),子类对接口中的抽象方法全部覆盖后,子类才可以实例化。
否则子类是一个抽象类
举个简单的列子:
<span style="font-size:18px;">public class try_01_多实现 {
public static void main(String[] args)
{
Test t = new Test();
t.show();
System.out.println(t.NUM);
System.out.println(Inter.NUM);
System.out.println(Test.NUM);
D d = new D();
d.Ashow();
}
}
interface Inter
{
public static final int NUM = 3;
public abstract void show();
}
interface InterA
{
public abstract void show();
}
class Demo
{
public void function(){};
}
class Test extendsDemo implements Inter,InterA
{
public void show()
{
System.out.println("Inter,InterA中都有的show,实现一个show方法就同时覆盖了他们");
};
}
interface A
{
public abstract void methodA();
public abstract void Ashow();
}
interface B extendsA
{
public abstract void methodB();
}
interface C extendsB
{
/*public abstract */void methodC();
}
class D implementsC
{
/*若想创建D则需要覆盖A,B,C三个里面的所有方法*/
public void methodA(){}
public void methodB(){}
public void methodC(){}
public void Ashow() {
System.out.println("创造D则必须覆盖其所实现的接口的方法 即使是奶奶级的A");
}
}
</span>
输出结果为:
Inter,InterA中都有的show,实现一个show方法就同时覆盖了他们
3
3
3
创造D则必须覆盖其所实现的接口的方法即使是奶奶级的A
从上述例子中class Test extends Demo implements Inter,InterA我们可以看到,继承类的同时我没还可以实现接口,切可以实现多个接口。
也就是class Test只有一个干爹Demo,但是有两个干妈:Inter和InterA。
或者我们可以把它看成非洲的部落,大部分部落实行一夫多妻制,也就是说你只有一个爹,但是你却又一堆妈:大妈,二妈,三妈。。。。。。
从interface C extendsB中我们注意到一个问题,虽然没有加abstract,但是默认的是public abstract void show()那么我们在实现c的时候就必须覆盖show()方法,就像你是大妈生的,但是不管你内心是否承认二妈,无论从法律还是事实出发都需要承认那是妈。
------- android培训、java培训、期待与您交流! ----------