Java中抽象类和接口两者区别

一:抽象类

 

  1. 简介
         用abstract修饰的类叫做抽象类。
         Java中抽象类和接口两者区别
         抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,
         那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,
         如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现。
         Java中抽象类和接口两者区别
  2.  抽象类的特点
         ⑴抽象类不能有对象,(不能用new此关键字来创建抽象类的对象)
                   a:创建一个抽象类Animal
                            Java中抽象类和接口两者区别
                   b:尝试创建Animal对象
                            Java中抽象类和接口两者区别
         ⑵有抽象方法的类一定是抽象类
                   a:有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法
                          Java中抽象类和接口两者区别
                   b:但是抽象类中不一定有抽象方法
                          Java中抽象类和接口两者区别
                          
         ⑶抽象类中的抽象方法必须在子类中被重写
                    a:创建一个抽象类Animal
                           Java中抽象类和接口两者区别
                    b:创建一个子类Cat
                           Java中抽象类和接口两者区别  
         ⑷abstract修饰的方法为抽象方法,此方法不能有方法体(就是什么内容不能有)
                  Java中抽象类和接口两者区别
                  注意:抽象方法不能有方法体,在方法后面加一个大括号而里面什么都不写也是不行的,
                             编译器会报“abstract methods do not specify a body”这样一个错误。
                    

二:接口

  1. 简介
            接口就是一个规范和抽象类比较相似。它只管做什么,不管怎么做。通俗的讲,接口就是某个事物对外提供的一些功能的声      明,其定义和类比较相似,只不过是通过interface关键字来完成。
  2.  接口的特点
              ⑴接口中的所有属性默认为:public static final ****;并且要有初始化值
                     Java中抽象类和接口两者区别
                     下面给与初始化值,然后测试一个子类
                      Java中抽象类和接口两者区别
                      Java中抽象类和接口两者区别
                      由上可知,虽然我们定义num变量的时候,没有设置final属性,但是通过上面的
                      效果可知num这个变量的值还是不可修改的,默认带有final属性。
              ⑵接口中的所有方法默认为:public abstract ****;              

三:接口和抽象类的区别

               Java中抽象类和接口两者区别