• Java——继承下的抽象类与接口


    在这里插入图片描述

    前言
    我们前一章写了继承性,这一章节,一起来学习Java中的抽象类与接口相关知识。

    壹、抽象类

    1、定义:用关键字abstract修饰的类称为抽象类(abstract类)。
    2、格式:

      abstract   class A{
        ......
      }
    
    • 1
    • 2
    • 3

    3、特点:
    (1)抽象类中可以有抽象方法;
    与普通类相比,抽象类中既可以有抽象方法,也可以有非抽象方法。对于抽象方法,只允许声明,不可以实现,而且不允许使用 finalabstract 同时声明一个方法。看下面一个例子;

    abstract class A
    {
       abstract int min(int x,int y);
       int max(int x,int y)
       {
       return x>y?x:y;
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (2)抽象类不能用new运算符创建对象;
    若一个非抽象类是一个抽象类的子类,在子类中必须重写父类中的抽象方法,给出方法体,即子类对于父类中的abstract所修饰的方法的重新声明,同时保证声明的方法名字,返回值类型,参数个数及类型于父类的抽象方法完全相同。

    (3)做上转型对象
    尽管抽象类不能创建对象,但继承下的子类必须重写子类中的其中的全部抽象方法,这样可以绕抽象类声明的对象成为其子类对象的上转型对象,并且调用子类重写的方法。
    4、看一段代码展示
    父类:

    public abstract class A {
        public   abstract  void  print();
        public void tell()
        {
            System.out.println("hello,world!");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    子类

    public class B extends A{
        @Override
        public void print() {
            System.out.println("I am a good boy.");
        }
    
        public static void main(String[] args) {
           A a=new B();//上转型对象
           a.print();
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    贰、接口

    前言:接口的使用,在大型项目里面,非常普遍,将一个接口内的功能定义好,其他类直接通过关键字implements来实现。

    1、接口的声明和使用
    (1)接口的声明
    我们曾使用关键字class来声明类,接口则是通过关键字interface来声明,格式如下:interface 接口的名字
    (2)接口体
    接口体包含常量定义和方法定义两个部分。接口体中只进行方法的声明,不允许提供方法的实现,所以方法的实现没有方法体。
    例如:

    interface Printtable
    {
    final int Max=100;
    void add();
    float sum(float x,float y);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (3)接口的使用
    一个类通过关键字implements来声明自己实现一个或者多个接口。如果实现多个接口,则需要用逗号隔开,

    class A implements PrintableAddable
    
    • 1

    大家在这里注意一下,继承下与接口的实现;
    如:

    class A extends B implements PrintableAddable
    
    • 1

    如果一个类实现某个接口,就必须实现接口内所有方法,即为这些方法提供方法体。同时保证声明的方法名字,返回值类型,参数个数及类型与接口完全相同。
    注意,接口的方法默认为publicabstract,因而接口在声明方法是可以省略前面的publicabstract,但是类在实现接口方法时候就必须用public来实现。
    (4)看下面代码
    接口:

    public interface A {
        void print();//只需要声明方法,无需实现
    }
    
    • 1
    • 2
    • 3

    B实现A接口;

    public class B implements A{
        @Override
        public void print() {
            System.out.println("I am a good boy.");
        }
    
        public static void main(String[] args) {
            B a=new B();//上转型对象
            a.print();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (5)如果A接口中的所有方法在B中没有实现,会出现什么结果;
    在这里插入图片描述
    在这里插入图片描述
    所有在实现接口时,我们需要将接口内的方法进行重写,即为实现方法。这与前面讲到的继承抽象类相似。

    下一章,我们一起来学习接口与抽象类的比较,他们有什么相同,又有什么不同呢?

  • 相关阅读:
    HTML/XML转义字符对照
    Pyside6:信号与槽
    Linux常用命令
    消息队列题目
    使用栈数据结构进行全排序
    Kafka笔记
    【人工智能与深度学习】解码语言模型
    一、项目整合管理
    hiredis在vs2010上编译不通过及解决方法
    继承(一)—— 继承的定义 + 继承方式 和 访问限定符的关系
  • 原文地址:https://blog.csdn.net/qq_64131064/article/details/127941426