public abstract class aaa { void a1(); void a2(); } public interface class bbb{ void b1(); void b2(); }public class a extends aaa{ public void a1(){} } public class b implements bbb{ public void b1(){} public void b2(){} }从上面可以看出,子类如果继承abstract类的话,可以不用全部实现abstract 类中的方法。 而如果是继承interface的话,就要全部实现interface的方法。
這樣的話,程序在編譯時,不是把整個[實現接口的類]載入,而是在真正使用[實現接口的類]中的某個方法時,才把這個方法進行編譯.
如果可以,尽量用接口
接口里的方法,没有方法体,你一旦implements接口,就必须实现里面所有的方法
抽象类则不用
接口与抽象类的不同点是:1 外部关键字不同,接口用interface 而抽象类用abstract.
2 接口里的方法接口全是抽象的,抽象类可以抽象也可以非~~。
3 接口里不可以有实现,抽象类可以部分实现。
4 接口可以多实现,抽象只能继承一个。
如:
interface example{
public void A();
public void B();
}
你可以实现他,他容易移植,但不容易扩展。
abstract example{
public void A();
public void B();
}
你可以继承他,他容易扩展,但不容易移植。
如:
class myClass implement example
{
A(){system.out.print("1");
B(){....}
}你必须全实现他,以后要加方法,得加在接口里,你还得实现他!
而
class myClass extend example
{
A(){......}
}可以不全实现他,以后要加方法直接加在父类里,你不用实现他!
abstract example{
public void A();
public void B();
public void C(){ system.out.print("2");}
}
可以帮助你!!!!!
void a1();
void a2();
}
public interface class bbb{
void b1();
void b2();
}public class a extends aaa{
public void a1(){}
}
public class b implements bbb{
public void b1(){}
public void b2(){}
}从上面可以看出,子类如果继承abstract类的话,可以不用全部实现abstract 类中的方法。
而如果是继承interface的话,就要全部实现interface的方法。
如:
interface example{
public void A();
public void B();
}
class myClass implement example
{
A(){system.out.print("1");
B(){....}
}
class mainGame{
myClass exam=new myClass();
.....
.....// 假如你的程序有上千行,你如果用的是myClass exam =new ..
.....// 你想用youClass这个类的东西,你的源代码就的全改,
.....// 改为:youClass exam= youClass();
exam.move();
exam.paint();
exam.dead();
}
而现在你就可以不毕改所有的了!
你只需
class mainGame{
example exam=new myClass()改为:
example exam=new youClass();
.....
....
里面东西不用改!
}
接口用的比抽象类多
很多书上引进interface这一概念时
都从多继承角度的
但是interface的有点决非与此
它可以称作面向接口编程
我也一直对这两者间的区别不是太清楚
没有理解到各位这样的深度