【一文精通JAVA | 第四篇】抽象类&接口

发布于:2025-03-13 ⋅ 阅读:(10) ⋅ 点赞:(0)

回顾:

一、final关键字

        可以修饰类、函数、变量

        被final修饰的类不能被继承。

        继承有利有弊,它的出现对封装发生了挑战。

        为什么被final关键字修饰后不能再继承?

        这是因为被final关键字修饰以后,说明这是最终类,无法被子类重写,所以无法被继承

        被final修饰的方法不可以被重写

        但是如果,该类中不能重写特定的方法,我们其实用final修饰该方法即可,不需要再用final关键字修饰这个类。

        final既可以修饰成员变量,又可以修饰局部变量。

        比如final int Y = 9,这个变量无法再次更改,他的值只能为9。

        final修饰以后,可以让程序更加严谨,比如Π的值只能为3.14,这个时候我们就可以用fianl对其进行修饰

二、如何实现多态?

        1.向上转型

        2.方法重写

        3.父类引用调用这个重写方法,运行时绑定。

重写和重载的区别?

        重写和重载最大的区别,在于,重写参数相同,但是重载参数类型可以不同

三、抽象类

        抽象类概念

        一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类,并且抽象类不能进行实例化

        抽象方法

        和抽象类一样都是被abstract修饰,并且抽象方法无需方法体

        当多个类中出现相同功能,但是功能主体不同。

        注意事项

  1. 抽象类当中不一定包含抽象方法,但是包含抽象方法的类一定是抽象类。
  2. 抽象类和抽象方法都是abstract关键字修饰的
  3. 抽象类当中可以定义成员变量和成员方法(且抽象方法可不包含方法体)
  4. 抽象类不能被实例化,只有普通类可以被实例化
  5. 当一个普通类继承抽象类时,普通类一定要重写抽象方法
  6. 抽象类存在的最大意义就是为了被继承
  7. 当一个抽象类A继承一个抽象类B,此时抽象类A不需要重写抽象类B中的成员。但是当一个普通类C,继承了抽象类A,就需要重写抽象类A中的抽象方法
  8. 抽象方法不能有方法体,否则会报错。

抽象类的特点:

        抽象方法一定在抽象类中

        抽象方法和抽象类都必须被abstract关键字修饰

        抽象类不可以用new创建对象,因为调用抽象方法没意义(没有执行体,写了纯白给)。

        抽象类中的方法要被使用,必须由子类重写其所有的抽象方法后,建立子类对象使用如果子类只重写了部分抽象方法,那么该子类还是一个抽象类。

        抽象类和一般类没有太大的不同,该怎么样描述事物,就如何描述事物

四、接口

        初期,可以理解为是一个特殊的抽象类。

        当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表现。接口里面的成员必须是全抽象的。

        接口:其实就是一个标准的规范!!可以算抽象类进一步抽象

        格式特点:

                1.接口种常见定义:常量,抽象方法

                2.接口中的成员有固定修饰符

                常量为:public static final

                方法为:public abstract

               接口中的成员都是public的,但是前面的public都可以省略,方法即便写成void show(),他前面默认添加public abstract void show();

问题:为什么类和类之间叫做继承,而类和接口之间叫做实现?

        即便是抽象类,他也只是特定的方法是抽象的,可以在子类当中进行继承,对特定的方法进行重写就行,但是接口中的变量方法全是抽象的,都需要重新进行重写

       接口不可以创建对象,这是因为里面有抽象方法。

        需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以进行实例化。

接口可以实现多实现,这是因为接口类中的方法都是抽象方法,抽象方法是不能实现的,即便是几个抽象类中的抽象方法都同名的情况,也不会产生其他影响。

接口与接口之间是继承关系,同时接口直接还存在多继承

                

接口的特点?

        接口是对外暴露的规则

        接口是程序的功能扩展

        接口是可以多实现

对于类的继承只是继承了类里面的一小部分内容,但是对于接口的实现,是将接口中的所有内容全部继承过去。