抽象类和接口

类到对象是实例化,对象到类是抽象

 

抽象类:

  1:什么是抽象类?

    类和类之间有共同特征,将这些共同特征提取出来,形成的就是抽象类

    类本身是不存在的,所以抽象类无法创建对象《无法实例化》

  2:抽象类属于什么数据类型?

    抽象类也属于引用数据类型。

  3:抽象类怎么定义?

    语法:

      [修饰符列表] abstract class 类名{

        类体;

      }

  4:抽象类是无法实例化的,无法创建对象,所以抽象类是用来被子类继承的

  5:抽象类关联到一个概念:抽象方法。什么是抽象方法?

    抽象方法表示没有实现的方法,没有方法体的方法

  例如:public abstract void dosome();

    抽象方法特点是:

      特点1:没有方法体,以分号结尾。

      特点2:前面修饰符列表中有abstract关键字。

  6:抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中

 *****  一个非抽象的类继承抽象类,必须将抽象类的方法实现了(即重写)

 

接口:

  1:接口也是一种引用数据类型,编译自后也是一个class字节码文件

  2:接口是完全抽象的。(抽象类是半抽象)或者也可以说接口是特殊的抽象类

  3:接口怎么定义,语法是什么?

    [修饰符列表] interface 接口名{}

  4:接口支持多继承,一个接口可以继承多个接口

  5:接口中只包含两部分内容,一部分是:常量,一部分是:抽象方法

    接口中没有其他内容了,只有以上两部分

  6:接口中所有的元素都是public修饰的(都是公开的)

  7:接口中的抽象方法的public abstract修饰符可以省略

  8:接口中常量的public static final可以省略

  9:接口中的方法都是抽象方法,所以接口中的方法不能有方法体

interface A{
                        //接口的定义
}

 

接口的基础语法:

  类和类之间叫做继承,类和接口之间叫做实现

  仍然可以将 实现 看作 继承。

  继承使用extends关键字完成

  实现使用 implements 关键字完成

  ***** 当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖、重写)  

  3:接口和接口之间支持多继承(extends)

     一个类可以同时实现多个接口(implements)

  这种机制弥补了Java中哪个缺陷?

    Java中类和类之间只支持单继承,实际上单继承是为了简单而出现的,现实世界中存在多继承,Java中的接口弥补了单继承带来的缺陷。    

 

interface A{
    void m1();
}

interface B{
    void m2();
}

interface C{
    void m3();
}


class D implements A,B,C{
    public void m1() {
        
    }
    public void m2() {
        
    }
    public void m3() {
        
    }

 

  继承和实现都存在的话,代码应该怎么写?

  extends关键字在前

  implements 关键字在后

class Animal{
    
}

interface Flyable{
    void fly();
}

class Cat extends Animal implements Flyable{
    public void fly() {                        //实现某一接口,必须对接口中的方法进行重写
        System.out.println("一只会飞的猫");
    }
}

 

接口在开发中的作用:

   面向接口编程,可以降低程序的耦合度,提高程序的扩展力,符合OCP开发原则。

  接口的使用离不开多态机制。(接口+多态 才可以达到降低耦合度)

 

  接口可以解耦合,解开谁和谁的耦合??

  任何一个接口都有调用者和实现者。

  接口可以将调用者和实现者解耦合。

  调用者面向接口调用,实现者面向接口实现

 

  以后进行大型项目的开发,一般都是将一个项目分成一个模块一个模块的,模块和模块之间采用接口衔接。降低耦合度。

 

类型和类型之间的关系:

  is a(继承)、has a(关联)、  like a(实现)

    is a:

      Cat is a Animal

      凡是能够满足 is a 的表示“继承关系”

       A extends B

    has a:

      I has a pen

      凡是能够满足has a 关系的表示“关联关系”

      关联关系通常以“属性”的形式存在。

        A{

          B b;

         }

 

      like a:

        Cooker like a foodMenu

         凡是能够满足like a 关系的表示“实现关系”

          实现关系通常是:类实现接口。

          A implements B

抽象类和接口的区别:

  在这里只说一下抽象类和接口在语法上的区别

  至于以后抽象列和接口如何进行选择,通过后面的项目去体会/学习。

 

  抽象类是半抽象的。

  接口是完全抽象的。

 

  抽象类中有构造方法

  接口中没有构造方法

    

  接口和接口之间支持多继承

  类和类之间只能单继承

 

  一个类可以同时实现多个接口

  一个抽象类只能继承一个类(单继承)

 

  接口中只允许出现常量和抽象方法

 

这里先透漏一个信息:

  以后接口使用的比抽象类多。一般抽象类使用的还是少。

  接口一般都是对“行为”的抽象。

 

posted @ 2021-04-29 12:21  南昌故郡  阅读(53)  评论(0)    收藏  举报