接口
通过interface关键字定义接口
类通过implements实现接口
接口不能够实例化
接口中全部都是形象办法
接口中的形象办法能够省略public abstract关键字
实现类必须实现接口中的全副形象办法
要么它就是一个抽象类
在jdk1.8里容许接口中呈现一般办法,要求被static或者default润饰
// static public void hi() {} // default public void hi() {}
public class Test1_Interface { public static void main(String[] args) { // TODO Auto-generated method stub Demo demo=new DemoImpl(); demo.eat(); demo.game(); }}interface Demo{ void eat(); void game();}class DemoImpl implements Demo{ @Override public void eat() { // TODO Auto-generated method stub System.out.println("eat()..."); } @Override public void game() { // TODO Auto-generated method stub System.out.println("game()..."); } }
接口的用法
接口里没有构造方法/没有变量都是常量
接口里都是形象办法(jdk1.8能够有非凡的一般办法)
接口里的常量能够简写,会主动拼接public static final
接口里的办法能够简写,会主动拼接public abstract
public class Test2_Interface2 { public static void main(String[] args) { // TODO Auto-generated method stub Inter in=new InterImpl(); System.out.println(in.age); System.out.println( Inter.age );//获取值,age是static的 //TODO 7,测试接口里的办法 String desc = in.save(); System.out.println(desc); in.delete(10); }}interface Inter{ int age=40; String save(); void delete(int id);}class InterImpl implements Inter{ @Override public String save() { // TODO Auto-generated method stub return "success"; } @Override public void delete(int id) { // TODO Auto-generated method stub System.out.println("delete()..."+id); } }
接口的简单用法
接口能够多继承,
实现类和接口能够多实现
public class Test3_Interface3 { public static void main(String[] args) { //4,--2号接口的性能,接口那么多,想用谁的性能,右边就写谁 Inter2 in = new Inter2Impl() ; in.update(); in.save(); in.delete(5); in.get(); }} interface Inter1{ void save();}interface Inter3{ void update(); void get();}//5,实现类能够在继承的同时,多实现abstract class Impl2 extends Object implements Inter1 , Inter3{ }//3,接口和实现类之间 -- 是实现关系 ,能够多实现(逗号隔开)//--Impl实现类,同时实现了Inter1和Inter3接口的性能,//--须要同时重写多个形象办法,否则就是一个抽象类class Impl implements Inter1 , Inter3{ @Override public void update() { } @Override public void get() { } @Override public void save() { }}//1,接口和接口之间 -- 是继承关系,能够多继承(逗号隔开)//--2号接口同时应用了1号和3号接口的性能! interface Inter2 extends Inter1 , Inter3{ void delete(int id) ;}//2,想要应用2号接口的性能,找一个实现类来实现接口class Inter2Impl implements Inter2{ @Override public void save() { System.out.println(1); } @Override public void update() { System.out.println(2); } @Override public void get() { System.out.println(3); } @Override public void delete(int id) { System.out.println(4); }}
四,接口和抽象类的区别
--1,类和类间的关系:是继承关系 --java里只反对单根继承 --class A extends B --其中A是子类,B是父类.子类能够应用父类的所有性能 --办法的重写override:如果想要批改父类的原有性能,能够进行办法重写--2,接口和接口间的关系:是继承关系 --接口的呈现就是为了冲破java单继承的局限性 --接口间能够多继承 --interface A extends B , C --其中A是子接口,B和C是父接口 --A就领有了B和C的所有性能,A的性能是最全的 --class Impl implements A --Impl实现类就须要同时重写A B C 接口里的所有形象办法,否则就是一个抽象类--3,类和接口间的关系:是实现关系 --实现类能够实现接口,而且能够多实现 --class A implements B,C --A是实现类,B和C是接口. --A须要同时重写B和C接口里的所有形象办法,否则就是一个抽象类 --类能够在继承的同时多实现 --class A extends B implements C , D --A能够叫子类,也能够叫是实现类 --A同时领有父类B的性能,也同时领有接口C和D的性能 --A须要同时重写C和D接口里的所有形象办法,否则就是一个抽象类 --对于父类B里的办法吗?看需要,B类是父类,外面如果都是一般办法,只有须要批改才会产生重写. --4,抽象类和接口的区别 --相同点 --抽象类和接口都是形象层,个别用来提取共性 --都不能被实例化 --不同点 --构造方法:抽象类里有,接口里没有!! --成员变量:抽象类里有,接口里没有,接口里都是常量!! --成员办法:抽象类类能够有一般办法和形象办法,然而接口里都是形象办法(1.8后能够有) --接口里存在简写模式,抽象类里没有. --接口里的常量,int age = 10;会为常量主动拼接public static final --接口里的办法,void save();会为办法主动拼接public abstract --怎么去设计你的形象层,到底是体现为一个抽象类呢还是接口呢? --要害就看你需不需要提供办法体,如果类里的办法都不须要提供办法体,能够设计为接口.如果类里的办法须要提供办法,设计为抽象类. --形象层到底设计成抽象类还是接口,谁好呢? --如果实现类想要同时领有多个性能,最好抉择接口,因为接口能够多继承多实现 --如果就是设计为抽象类,子类就只能继承一个父类,只有这么一次的继承权
五,程序设计:
--需要: 具体事物:培优班老师,高手班老师 共性:备课 / 讲课 测试:创立多态对象测试--利用面向接口编程的思维实现:
public class Test4_Design { public static void main(String[] args) { Teacher cgb=new cgbteacher(); cgb.ready(); cgb.teach(); }}interface Teacher{ void ready(); void teach();}class cgbteacher implements Teacher{ @Override public void ready() { // TODO Auto-generated method stub System.out.println("培优班老师正在 备课"); } @Override public void teach() { // TODO Auto-generated method stub System.out.println("培优班老师正在 讲课"); } }abstract class actteacher implements Teacher{ }