抽象类和接口的异同

来源:互联网 发布:浙江手工艺品网络 编辑:程序博客网 时间:2024/04/30 11:21

 抽象类和接口的相同和异同(abstravct and interface)

我们在编写对象的时候会对一些类的方法进行定义。但是并没有具体的实现。
而是把它们放到子类中去实现,具有灵活性。
在抽象类中可以有抽象方法,也可以没有抽象方法。但是有了抽象方法的类一定是抽象类。
抽象类和接口在JAVA中都是用来表述抽象类的。
在面向对象的概念,所以的对象都是通过类来描述的。但反之则不行。若是一个
类中没有包含足够的信息描绘一个具体的对象,这个的类就是抽象类。
如:我们定义了一个表示各种各样的图像的类shape,这个类有一些属性,可以用于计算这个类的面积的方法getArea(),但是对于不同的图形计算面积的方法也不相同,我们不可能在shape这个类中都把方法写齐全。但是可以通过关键字abstract在父类shape中不实现这个方法,而是将它的实现放到它的子类中去实现,比如放到子类三角形中去实现getArea(),这个方法。
 
在JAVA中除了使用抽象类来实现一定程度的抽象外还可以定义一种特殊的抽象方法----接口(interface)。和抽象类的方法不一样,在抽象类中需要加上关键字abstract来表明某个方法是抽象的,但是在接口中则不需要。
 
相同点:1.他们都能不能生成实例,都有抽象方法。
2接口是特殊的抽象类。
3.接口和抽象类的继承都使用的关键字是extends。(但是在接口中子类必须要用implements来实现它)
 
不同点:
1.接口的定义的变量默认是public static final型,且必须给其赋初值。所以在实现类中不能重新定义,也不能改变其值。而在抽象类中其值在子类中可以重新定义也可以重新赋值。
2.接口的方法默认的都是public abstract类型的。
3.抽象类中可以有构造器,但是接口中除了抽象方法什么都没有。
4.名字不同,接口写的是public interface  Shape{};
而抽象类写的是public  abstract class Shape{};
接口里全部都是抽象方法。而抽象类里可以有抽象方法也可以有其他的方法。接口里的属性都是静态的。但是抽象类的属性可以是任意的。
5.还可以从继承的角度看,接口可以多继承,一个接口可以继承多个接口。但是抽象类却不能,只能是继承一个父类,不能继承多个父类。要是能继承多个父类的话会在父类和子类的方法中有发生冲突。
 
 
原创粉丝点击