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

在这里插入图片描述

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

壹、抽象类

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

  abstract   class A{
    ......
  }

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

abstract class A
{
   abstract int min(int x,int y);
   int max(int x,int y)
   {
   return x>y?x:y;
   }
}

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

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

public abstract class A {
    public   abstract  void  print();
    public void tell()
    {
        System.out.println("hello,world!");
    }
}

子类

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();
    }

贰、接口

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

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

interface Printtable
{
final int Max=100;
void add();
float sum(float x,float y);
}

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

class A implements PrintableAddable

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

class A extends B implements PrintableAddable

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

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

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();
    }
}

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

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


版权声明:本文为qq_64131064原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。