interface someInf{ void f(); } class A extends JOOP implements someInf{ // use fuction in JOOP void f(){ do something}; } 上面的形式能给我们带来什么好处呢?因为它完全可以实现如下, abstract someInf{ void f(); } class A extends someInf{ JOOP jop = new JOOP(); // use fuction in JOOP void f(){ do something}; } ========================================================================== 继承一个类和将一个类作为自己的一个成员是不一样的,访问限制上首先就不一样。对于extends ,我们可以访问的权限要比在类里面声明一个类要大。而且接口也是为了规范化。我也是菜鸟,说的错了,请大家指正。
interface someInf{ void f(); } class A extends JOOP implements someInf{ // use fuction in JOOP void f(){ do something}; } 上面的形式能给我们带来什么好处呢?因为它完全可以实现如下, abstract someInf{ void f(); } class A extends someInf{ JOOP jop = new JOOP(); // use fuction in JOOP void f(){ do something}; } --------------------------------------------------------------------- 这个例子过于简单,没有什么可比性; 如果抽象类中不只是有一个方法void f(),还有其他很多的方法,使用抽象类的子类就可以覆盖其中的某一个或几个方法; 但对于接口来说,如果接口中不只是有一个方法void f(),还有其他很多的方法,实现了这个接口的类就必须重载接口中所有的方法; 对于接口而言,如果你新增了一个方法,那你实现这个接口所有的类都必须重新重载这个方法;而抽象类则不受此限制。
3 如果类A需要继承多个接口怎样处理? 另外,你的这个结构把继承关系改变了, 原来的A是继承于JOOP的, 你修改过的A是继承于someInf的。你确定这样没有问题? 如果我的确需要A继承于JOOP怎么办?打个比方, class 人 { }; interface 经理 { }; interface 技术部 { }; 那么 class 技术部经理 extends 人 implements 技术部 , 经理{ } 是很合乎逻辑的。按照你的架构应该如何处理呢? 按你的架构,class 技术部经理会成为: class 技术部经理 extends 技术部 implements 经理{ 人 man = new 人(); } 或者 class 技术部经理 extends 经理 implements 技术部{ 人 man = new 人(); } 假如有一个函数 int func(人 man){ } 那么该func就不能作用于一个技术部经理的类,因为技术部经理包含一个人,但技术部经理不是人…… 汗……
void f();
}
class A extends JOOP implements someInf{
// use fuction in JOOP
void f(){ do something};
}
上面的形式能给我们带来什么好处呢?因为它完全可以实现如下,
abstract someInf{
void f();
}
class A extends someInf{
JOOP jop = new JOOP();
// use fuction in JOOP
void f(){ do something};
}
==========================================================================
继承一个类和将一个类作为自己的一个成员是不一样的,访问限制上首先就不一样。对于extends ,我们可以访问的权限要比在类里面声明一个类要大。而且接口也是为了规范化。我也是菜鸟,说的错了,请大家指正。
void f();
}
class A extends JOOP implements someInf{
// use fuction in JOOP
void f(){ do something};
}
上面的形式能给我们带来什么好处呢?因为它完全可以实现如下,
abstract someInf{
void f();
}
class A extends someInf{
JOOP jop = new JOOP();
// use fuction in JOOP
void f(){ do something};
}
---------------------------------------------------------------------
这个例子过于简单,没有什么可比性;
如果抽象类中不只是有一个方法void f(),还有其他很多的方法,使用抽象类的子类就可以覆盖其中的某一个或几个方法;
但对于接口来说,如果接口中不只是有一个方法void f(),还有其他很多的方法,实现了这个接口的类就必须重载接口中所有的方法;
对于接口而言,如果你新增了一个方法,那你实现这个接口所有的类都必须重新重载这个方法;而抽象类则不受此限制。
如果类A需要继承多个接口怎样处理?
另外,你的这个结构把继承关系改变了,
原来的A是继承于JOOP的,
你修改过的A是继承于someInf的。你确定这样没有问题?
如果我的确需要A继承于JOOP怎么办?打个比方,
class 人 {
}; interface 经理 {
};
interface 技术部 {
}; 那么
class 技术部经理 extends 人 implements 技术部 , 经理{
}
是很合乎逻辑的。按照你的架构应该如何处理呢?
按你的架构,class 技术部经理会成为:
class 技术部经理 extends 技术部 implements 经理{
人 man = new 人();
}
或者
class 技术部经理 extends 经理 implements 技术部{
人 man = new 人();
}
假如有一个函数
int func(人 man){
} 那么该func就不能作用于一个技术部经理的类,因为技术部经理包含一个人,但技术部经理不是人……
汗……