简述抽象类和接口、抽象类区别的区别

柔情只为你懂 2022-12-20 08:48 347阅读 0赞

抽象类和普通类和接口

  • 什么是抽象类
  • 什么是接口
  • 抽象类和接口区别

什么是抽象类

用abstract修饰的类叫抽象类
1、抽象类不能有对象,抽象类不能实例化,不能new
2、abstract修饰的方法为抽象方法,这种方法不能有方法体(什么内容都没有)
3、抽象类不能有对象,不能new对象
4、有抽象方法的一定是抽象类,抽象类中不一定有抽象方法
5、抽象类型中的抽象方法必须在子类中被重写

抽象类不能被实例化,抽象方法必须被重写,定义它们是干嘛?

抽象类是用来被继承的,如果没有类去继承它,也就失去了意义;抽象方法生来就是被重写的,必须被重写。(只要继承了某个抽象类,就必须去重写此类中的抽象方法)

  1. public abstract class Animal{
  2. public abstract void eat();
  3. public abstract void sleep();
  4. }

定义了一个叫Animal的抽象类含有两个抽象方法,抽象方法后面也不能带大括号。
之后定义一个Cat类

  1. public class Cat extends Animal{
  2. @Override
  3. public void eat() {
  4. System.out.println("猫吃鱼");
  5. }
  6. @Override
  7. public void sleep() {
  8. System.out.println("猫睡觉!");
  9. }
  10. }

在这里指的注意的是:当一个类继承抽象类的时候,这个类必须去重写所继承的抽象类的抽象方法

什么是接口

接口是对抽象类的进一步抽象
接口就是某个事物对外提供的一些功能的声明,通过interface关键字完成
注:
1、接口中所有的属性默认为:public static final。。。;
2、接口中所有的方法默认为:public abstract。。。;
3、接口不需要像类一样被继承,而是用implements去实现,类和接口的关系叫实现。

  1. public class Cat implements Sleep,Eat{
  2. @Override
  3. public void ioSleep(int i) {
  4. System.out.println("我是猫,我每天都不用睡觉!!!");
  5. }
  6. @Override
  7. public void ioEat() {
  8. System.out.println("我是猫,我吃猫粮!!!");
  9. }
  10. }
  11. public interface Sleep {
  12. public static int a = 1;
  13. public static int b = 2;
  14. public void ioSleep(int i);
  15. }
  16. public interface Eat {
  17. public abstract void ioEat();
  18. }

抽象类和接口区别

1、实现方法:
抽象类中可以有已经实现的方法,因为存在抽象方法,所以必须是抽象类

接口中只能包含抽象方法,抽象方法是没有被实现的,只能被重写
2、子类使用的关键词不一样
抽象类使用extends来继承,抽象类就是用来被继承的,所包含的抽象方法也需要被重写

接口使用implement关键字来实现,提供接口中所有声明方法的实现
(抽象类是将梦想传给家族,一代一代去完成。那么接口就是掌门人找大师兄来完成帮派的鸿星伟业,这时候就只有一次希望,要么有能力就实现,没能力就不要接。)
3、是否有构造器(构造函数)
抽象类是类,所有有类的所有特性,是不能被实例化,但可以有构造器

接口是不能有构造器的,是所包含的所有抽象方法的集合
4、修饰符
抽象类可以有public、protected、default这些修饰符

接口只有一个修饰符public
5、运行速度
抽象方法快

接口运行满,需要时间寻找在类中实现的方法
6、继承实现
抽象类中一个子类只能继承一个父类但是可以有多个接口

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 抽象接口区别

    一、抽象类 1、概念:就将一些事物的共性进行抽象 如:麻雀、燕子都可以归为鸟;奔驰、宝马都可以归为车 2、那抽象类与普通类有什么区别呢? 别傻傻的纠结半天,

    相关 抽象接口区别

    抽象类的特点: 抽象类一般在父类中使用,而它的子类实现父类中的抽象方法; 如果父类中有一个或多个抽象方法,那么父类必须为抽象类; 抽象类里的抽象方法没有任何

    相关 抽象接口区别

    相同点 都代表系统的抽象层,有助于系统的松耦合; 都不能被实例化; 都能包含抽象方法; 从JDK8开始,接口中也可以像抽象类一样,提供默认的实现(方法

    相关 接口抽象区别

    接口:一种特殊“抽象类”,接口里不能包含普通方法,接口里的所有方法都是抽象方法。java8对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现。 接口是从多个

    相关 接口抽象区别

        接口是对动作的抽象,这个对象能做什么。抽象类是对根源的抽象,这个对象是什么(一个类只能继承一个类(正如人不可能同时是生物和非生物),但可以实现多个接口(吃饭接口、走路接