接口
1、特点
- 接口可以继承多个接口
- 接口里只能声明常量,不能声明构造函数
- 接口中的方法默认为public abstract,属性默认为public static final
- 接口中的方法只能被public,abstract,default,static,strictfp修饰
- 接口中的方法不能非法组合,声明中只能有abstract, default,static其中一个
- 接口中的方法被static和default修饰时要有方法体
- 接口中的抽象方法不能被strictfp修饰
- 一个接口可以有多个静态方法和default方法,没有个数限制
- 接口中定义的抽象方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法 则实现类需要定义为抽象类
2、测试类
package ecut.test; import java.io.Serializable; import java.util.Comparator; public interface test extends Serializable,Comparator<test>{ //接口中的属性默认为public static final public static final int a=1; //接口不能有构造方法 //public test(){} //默认的修饰时public abstract public abstract void test1(); //接口中的方法不能非法组合,声明中只能有abstract, default, static其中一个 //接口中的方法只能被public, abstract, default, static, strictfp修饰 public static void test2(){ System.out.println("jdk1.8中,接口中的方法可以被static修饰"); } public default void test3(){ System.out.println("jdk1.8中,接口中的方法可以被default修饰"); } //接口中的抽象方法不能被strictfp修饰 //public abstract strictfp void test4(); public default strictfp void test5(){}; public static strictfp void test6(){}; }
抽象类
1、特点
- 抽象类可以定义成员变量
- 抽象类可以有构造,只不过不能new
- 抽象类中的成员可以被public、protected、默认、private修饰
- 抽象类不一定需要抽象方法,有抽象方法的类得声明为抽象类
- 抽象类中可以有静态方法
- 抽象类中的抽象方法不能被strictfp修饰
- 抽象类中不一定要有抽象方法,但是有抽象方法的类需要定义为抽象类
- 抽象类中定义的抽象方法都需要子类来实现,如果子类不能实现类中的所有的抽象方法 则实现类需要定义为抽象类
2、测试类
package ecut.test;
public abstract class test { //抽象类中可以定义成员变量 public int a1; protected int a2; int a3; private int a4; //抽象类可以有构造,只不过不能new public test(){} //抽象类中的成员可以被public、protected、默认、private修饰 public void test1() {} protected void test2(){} //类内或者同包才可以访问 void test3(){} private void test4(){} //抽象类不一定需要抽象方法,有抽象方法的类得声明为抽象类 public abstract void test5(); protected abstract void test6(); abstract void test7(); //抽象方法不能被private修饰 //private abstract void test8(); //抽象类中可以有静态方法 public static strictfp void test9(){} protected static strictfp void test10(){} static strictfp void test11(){} private static strictfp void test12(){} }
接口和抽象类的区别
1、接口中的成员变量都是常量,无论如何写都是public static final 修饰
2、接口中不能有构造方法,但是抽象类中可以有构造方法,只是不能new
3、接口中的方法和属性都只能用public修饰,但是抽象类可以用public、protected、默认、private修饰
4、接口中的方法可以被default修饰,抽象类不可以
5、接口可以多继承,抽象类不可以
6、接口内部不能有静态代码块,抽象类可以有静态代码块
接口和抽象类的相同点
1、抽象类和接口都不可以被实例化
2、抽象类和接口中的抽象方法需要实现,不让需要定义为抽象类
3、抽象类和接口都可以有静态方法
转载请于明显处标明出处