Java-抽象类和接口

一、抽象类
1、抽象类
java中可以定义没有方法体的方法(没有大括号),该方法由其子类具体实现,该没有方法体的方法我们称之为抽象方法。含有抽象方法的类称之为抽象类。
2、抽象方法的特点:
(1)只有方法头没有方法体,只有方法的声明,没有方法的实现。
(2)抽象方法用abstract修饰。
(3)抽象方法代表一种不确定的操作或行为。
(4)抽象方法不能被调用。
3、抽象类的特点:
(1)含有抽象方法的类称之为抽象类。
(2)抽象类用abstract来修饰。
(3)抽象类代表一种抽象的数据类型。
(4)抽象类不能实例化。也就是说不能在外部通过关键词new去创建对象,只有当其子类产生对象时,抽象类才会产生对象。这叫多态。
(5)抽象类中可以有具体的方法,可以没有抽象方法。
(6)一个类一旦继承了抽象类,要么实现父类的抽象方法,要么继续抽象下去,让其下一代去实现。
(7)抽象类往往是作为父类存在。

二、接口
1、接口里面只能有静态常量和抽象方法。
2、java接口是对功能的扩展,比如说人这个类,有eat()方法,所有人都有这个方法,但是smoke()这个方法并不是所有人都有这个方法。所有就可以把smoke放在接口中作为扩展功能。
3、通过实现接口,java类可以实现多实现。
4、一个类可以同时继承一个父类并且实现多个接口。
5、接口与接口之间可以用extends来实现继承关系。
6、接口不能实例化,它是纯抽象类。
7、在接口当中即便是声明了 int a=1;也是默认的带有static final关键字的。可以用接口名.a来访问。
8、接口当中不能使用private修饰符,因为本来接口里面的都是就是用来实现的,不能设为私有的。只能是public。
9、在接口中 public static final 三个修饰符的位置可以互换的。
10、在接口中声明方法即便不加public abstract,系统也是默认的加上的。
11、接口的引用变量可以引用其实现类的对象。

三、抽象类和接口的区别
1、抽象类和具体的实现类是一种继承关系,也就是说如果采用抽象类的方式,父类和子类在概念上是相同的。
2、接口和实现类在概念上不要求相同,接口只是抽象出没有任何关系类的共同特征,(比如说人和狗,没有任何关系,但是却都会跑。)而不去关注类之间的关系,是具有不同层次的类具有相同的行为。
3、抽象类是对具有相同属性和行为,并且逻辑上有关系的一类事物的抽象。而接口是对具有相同属性和行为,但是在逻辑上不相关的事物的抽象。
4、抽象类用于一组相关的事物,表示is-a的关系。而接口是用于一组不相关的事物,表示的是like-a的关系。

猜你喜欢

转载自fengwuhen1990.iteye.com/blog/2342110