今天简单回顾了一下接口和抽象类,之前感觉概念不深,现在有所加强,给大家分享一下
抽象类
有共同特征,比如每个动物都有饭吃,但是吃的种类又有所不同,比如牛吃草,猫吃猫粮,狗吃骨头,具体的种类有具体的吃法。
又比如,圆形,正方形,三角形,他们都有周长和面积,但是求的方法不一样,这里我们就需要进行一个分别构造。
抽象类就是,将功能概括成一个类,但是功能的实际实现由子类方法自己构造
abstaract关键字:用于修饰类,或者方法的关键字
-
抽象方法不能有方法体
-
抽象类中是有构造器的,因为之类对象实例化时需要直接或者间接去调用到父类的构造器
-
抽象类中可以没有抽象方法,但是抽象方法一定在抽象类中
-
子类必须实现抽象父类中的所有抽象方法后才可实例化,否则的话应该吧子类也设为抽象类
接口
接口的本质是契约,标准,规范,就像生活中的法律一样,要求大家进行遵守
规范
-
属性:必须使用public static final 修饰(因为默认只能被这个修饰,可以省略, 直接 void Persion();)
-
方法:jdk8之前:必须要声明抽象方法;jdk8:必须要声明静态方法,默认方法;jdk9:声明私有方法
-
不可以声明:构造器,代码块等
-
JAVA是单继承的,而接口的话一个类可以实现多个接口,有效提高了代码的可扩展性。
-
类必须要实现(或重写)接口内的所有抽象方法后才可以进行实例化,否则这个类必须要声明为抽象类
-
接口与接口之间是继承关系,切可以多继承
抽象类和接口的区别
相同点:
-
都可以声明抽象方法
-
都不能实例化
不同点:
-
抽象类必须要有构造器,而接口是没有构造器的
-
类与类之间是继承关系且是单继承,类与接口之间是实现关系,接口与接口之间是(可多继承)继承关系