Java中接口与抽象类的详解 以及区别
2017-03-04 本文已影响27人
AsgoodAswater
1、抽象类:
如果这个类里面的方法有一个是抽象的,那么这个类必须是抽象的。
抽象类中的方法,子类必须实现。
抽象类中可以有变量,可以有方法体的方法。
2、接口:
接口中方法都默认是public 的,不能有方法体。
接口中的变量都常量,都是public static final 的,必须先赋值。
如果一个类实现了此接口,必须覆盖接口中的所有抽象方法。
一、 抽象类
1、抽象类
包含一个抽象方法的类就是抽象类
2、抽象方法
声明而未被实现的方法,抽象方法必须使用abstract关键词字声明
public abstract class People { //关键词abstract,声明该类为抽象类
public int age;
public void Num() {
}
public abstract Name(); //声明该方法为抽象方法
}
3、抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
4、抽象类不能被直接实例化,要通过其子类进行实例化
5、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。
6、子类中的抽象方法不能与父类的抽象方法同名。
7、abstract不能与final并列修饰同一个类。
8、abstract 不能与private、static、final或native并列修饰同一个方法。
二、接口
1、接口是java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法组成
接口中所有方法都是抽象方法;
接口当中所有的方法都是public类型
2、接口的格式
interface interfaceName{
全局常量
抽象方法
}
3、接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的
class A implements Inter1,Inter2{ //Inter1和Inter2是接口
...
}
4、一个类可以同时继承抽象类和接口
class A extends Abs implements Inter1,Inter2{ //Abs是一个抽象类
...
}
5、一个接口不能继承抽象类,但可以通过extends关键字继承多个接口,实现接口的多继承
interface Inter implements Inter1,Inter2{ //Inter、Inter1、Inter2都为接口
...
}