抽象类和接口

接口

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、抽象类和接口都可以有静态方法

转载请于明显处标明出处

https://www.cnblogs.com/AmyZheng/p/9473299.html

原文地址:https://www.cnblogs.com/AmyZheng/p/9473299.html