Java学习:抽象类和接口

抽象类与接口

1.概念

       接口是对动作的抽象,抽象类是对本质的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。

       用abstract修饰的类叫做抽象类。其中需要强调一下abstract修饰符:

      1)abstract修饰的类为抽象类,此类不能有对象;
      2)abstract修饰的方法为抽象方法,此方法不能有方法体;

示例代码:

public abstract class Figure { 
	// 绘制几何图形方法 
	public abstract void onDraw(); 
}

       接口是对行为的抽象,是用interface关键词修饰的。

示例代码:

public interface Figure {
	//接口中静态成员变量 
	String name = "几何图形";//省略public static final
	// 绘制几何图形方法 
	void onDraw();//省略public
}

2、使用

1)抽象类 和 接口 都是用来抽象具体对象的,但是接口的抽象级别最高;

2)抽象类可以有具体的方法和属性,  接口只能有抽象方法和不可变常量(final);

3)抽象类主要用来抽象类别,接口主要用来抽象功能;

4)抽象类中不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的;

5)抽象类实现接口时,接口的方法在抽象类中可以被实现也可以不被实现,而普通实现接口必须实现所有接口方法。

3、抽象类和接口的对比

参数抽象类接口
默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现
实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器抽象类可以有构造器

接口不能有构造器

与正常Java类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别接口是完全不同的类型
访问修饰符抽象方法可以有publicprotecteddefault这些修饰符接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法抽象方法可以有main方法并且我们可以运行它接口没有main方法,因此我们不能运行它
多继承抽象方法可以继承一个类和实现多个接口

接口只可以继承一个或多个其它接口

速度比接口速度要快接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。如果你往接口中添加方法,那么你必须改变实现该接口的类。

4、总结

        总的来说,抽象类和接口主要有以下三种区别:

1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

        功能上来说,抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值